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}"));

 

posted @ 2020-12-17 16:57  雨后的太阳  阅读(1281)  评论(3编辑  收藏  举报