LoadRunner字符编码转换

发表于:2021-2-04 09:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:雨后的太阳    来源:博客园

  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:转换后的目标字符串。
  字符编码方式:
  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}"));

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号