LoadRunner字符編碼轉換


LoadRunner進行腳本開發時,經常會出現請求中包含中文或特殊符號(+、=等)導致請求失敗,或者響應報文中包含中文,輸出響應報文亂碼的情況,出現類似情況,可通過LR字符串編碼轉換函數lr_convert_string_encoding,將字符串轉換為需要的編碼方式;下面介紹LR字符轉編碼轉換函數和長江的編碼轉換處理;

1、LR編碼轉換函數lr_convert_string_encoding

lr_convert_string_encoding( const char *sourceString, const char *fromEncoding,const char *toEncoding, const char *paramName);
#sourceString:被轉換的源字符串。
#fromEncoding:轉換前的字符編碼。
#toEncoding:要轉換成為的字符編碼。
#paramName:轉換后的目標字符串。

字符編碼方式:

編碼方式 編碼值
LR_ENC_SYSTEM_LOCALE NULL
LR_ENC_UTF8 "utf-8"
UR_ENC_UNICODE "ucs-2"

2、url編碼

在url請求消息中,請求參數包含中文或特殊符號,不能被正確識別,需要進行url編碼;

url編碼前,請求url內容:http://203.3.227.214:9080/request/auth/getUserToken?auth=01234128&mobile=yzk7kd+fsjj==

url編碼后,請求url內容:http://203.3.227.214:9080/request/auth/getUserToken?auth=01234128&mobile=yzk7kd%2Bfsjj%3D%3D

將特殊符號+號和=號進行了編碼處理;

url編碼操作包含3步:

1)調用lr_convert_string_encoding函數,將mobile參數內容由LR本身的無編碼格式轉換為UTF-8編碼格式;該參數包含的字符串有字符串結束標識符NULL;

2)調用lr_save_string函數,將轉換后字符串的NULL標識符去掉;

3)調用web_convert_param函數,將參數編碼類型由PLAIN類型轉換為URL類型;

代碼如下:

//將包含中文或特殊字符的字符串保存到參數mobile中,然后將mobile參數編碼轉換為UTF8,保存到name1參數中
lr_convert_string_encoding(lr_eval_string("{mobile}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"name1");

//將name1參數字符串結尾標識符去掉,保存到變量param1中
lr_save_string(lr_eval_string("{name1}"),"param1");

//將param1編碼類型由PLAIN轉換為URL類型
web_convert_param("param1","SourceEncoding=PLAIN","TargetEncoding=URL",LAST);

//通過{param1}調用編碼后的參數
web_customer_request("request",
                "URL=http://203.3.227.214:9080/request/auth/getUserToken?auth=01234128&mobile={param1}",
                "Method=POST",
                "Body=",
                LAST);

3、響應報文亂碼轉碼

http請求報錯,響應報文中中文顯示亂碼,為了方便定位問題,需要將響應報文中文進行轉碼,使其能夠正常顯示;

響應報文亂碼轉碼分為2步:

1)調用web_reg_save_param函數,將響應報文保存到參數中;

2)調用lr_convert_string_encoding函數,將參數由UTF-8編碼轉換為LR編碼(LR_ENC_SYSTEM_LOCALE);

代碼如下:

//獲取響應報文
web_reg_save_param("response",
                    "LB=",
                    "RB=",
                    LAST);
                    
//調用http請求
web_customer_request("request",
                "URL=http://203.3.227.214:9080/request/auth/getUserToken?auth=01234128&mobile={param1}",
                "Method=POST",
                "Body=",
                LAST);
                
//響應報文中文轉碼(UTF8轉換為LR本地編碼LR_ENC_SYSTEM_LOCAL)
lr_convert_string_encoding(lr_eval_string("{response}"),
                            "LR_ENC_UTF8",
                            "LR_ENC_SYSTEM_LOCALE",
                            "str");
                            
//輸出轉換后的響應內容
lr_error_message("response:%s",lr_eval_string("{str}"));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM