loadrunner 发送中文参数

发表于:2013-08-20来源:Csdn作者:on_my_way20xx点击数: 标签:loadrunner
新的项目中,需要向应用发送一个中文的人名: payerName : 张三,调用失败。,观察错误日志,发现 传过去的payerName是乱码。 解决过程:

  新的项目中,需要向应用发送一个中文的人名: payerName : 张三,调用失败。,观察错误日志,发现 传过去的payerName是乱码。

  解决过程:

  1. Virtual User Gen的Tools->Recoding Options -> Advanced -> Support charset -> UTF-8

  重试之,无效。。。

  2. 使用lr_convert_string_encoding函数进行强制转码。

  [cpp] view plaincopyprint?

  lr_convert_string_encoding: 对中文进行UTF-8转码

  int lr_convert_string_encoding ( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName);

  该函数有4个参数,含义如下:

  sourceString:被转换的源字符串。

  fromEncoding:转换前的字符编码。

  toEncoding:要转换成为的字符编码。

  paramName:转换后的目标字符串。

  lr_convert_string_encoding: 对中文进行UTF-8转码

  int lr_convert_string_encoding ( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName);

  该函数有4个参数,含义如下:

  sourceString:被转换的源字符串。

  fromEncoding:转换前的字符编码。

  toEncoding:要转换成为的字符编码。

  paramName:转换后的目标字符串。

  注意: 使用这个函数转码出来的字符串会以 \x00 结尾,所以要做一次额外处理。

  代码如下:

  [cpp] view plaincopyprint?

  char tmp[50];

  lr_convert_string_encoding("张三", LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");

  strcpy(tmp,lr_eval_string("{str}"));

  lr_save_string(tmp,"payerName");

  char tmp[50];

  lr_convert_string_encoding("张三", LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");

  strcpy(tmp,lr_eval_string("{str}"));

  lr_save_string(tmp,"payerName");

  然后再使用 如下方式进行调用:

  [cpp] view plaincopyprint?

  web_custom_request("consume",

  "URL=http://192.168.12.89:8010/quickpay/v10/003",

  "Method=POST",

  "Resource=0",

  "RecContentType=application/json",

  "Referer=",

  "Mode=HTTP",

  "EncType=application/json",

  "Body={\"cardHolderName\":\"{payerName}\",\"cardNo\":\"4392260802828457\",\"cardTypeEnum\":\"CREDI\"}",

  LAST);

  web_custom_request("consume",

  "URL=http://192.168.12.89:8010/quickpay/v10/003",

  "Method=POST",

  "Resource=0",

  "RecContentType=application/json",

  "Referer=",

  "Mode=HTTP",

  "EncType=application/json",

  "Body={\"cardHolderName\":\"{payerName}\",\"cardNo\":\"4392260802828457\",\"cardTypeEnum\":\"CREDI\"}",

  LAST);

  再次运行脚本,OK了。

原文转自:http://blog.csdn.net/on_my_way20xx/article/details/9838163