这两天工作的时候,测试一个get接口,发送的参数中带中文,链接是这样子的:http://www.baidu.com/address=江苏省苏州市常熟市招商城3区11号门市部
在goole浏览器里直接打开即可,Chrome浏览器就把汉字自动转码了,但是在loadrunner中抓到的脚本就是这样子的:
web_url("ceshi_csb_broker",
"URL=http://xxx.xx.x.xxx/test/testTx.action?address=%E6%B1%9F%E8%8B%8F%E7%9C%81%E8%8B%8F%E5%B7%9E%E5%B8%82%E5%B8%B8%E7%86%9F%E5%B8%82%E6%8B%9B%E5%95%86%E5%9F%8E3%E5%8C%BA11%E5%8F%B7%E9%97%A8%E5%B8%82%E9%83%A8",
"Resource=1",
"RecContentType=application/json",
"Referer=",
"Snapshot=t1.inf",
LAST);
需要将上图的红色部分做参数化,但是又不能直接传汉字,所以需要把汉字再转码
1、先把汉字转为UTF8格式保存:
lr_convert_string_encoding("江苏省苏州市常熟市招商城3区11号门市部",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"addrUtf8");
2、把变量存为参数使用
lr_save_string(lr_eval_string("{addrUtf8}"),"addrUtf8_1");
3、继续把addUtf8_1转码为url格式
web_convert_param("addrUtf8_1","SourceEncoding=PLAIN","TargetEncoding=URL",LAST);
--------这其实我还有个小疑问没弄懂,就是如果SourceEncoding=HTML的话,也就是这样写
web_convert_param("addrUtf8_1","SourceEncoding=HTML","TargetEncoding=URL",LAST);
也能正常得到想要的结果,PLAIN和HTML有啥区别?啧啧以后再想咯~~~~
4、打印一下addrUtf8_1的值,
lr_output_message("addrUtf8_1的值是%s----------",lr_eval_string("{addrUtf8_1}"));
得到输出日志
addrUtf8_1的值是%E6%B1%9F%E8%8B%8F%E7%9C%81%E8%8B%8F%E5%B7%9E%E5%B8%82%E5%B8%B8%E7%86%9F%E5%B8%82%E6%8B%9B%E5%95%86%E5%9F%8E3%E5%8C%BA11%E5%8F%B7%E9%97%A8%E5%B8%82%E9%83%A8--------
接下来正常参数化就好了,
lr_convert_string_encoding("江苏省苏州市常熟市招商城3区11号门市部",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"addrUtf8");
——>
lr_convert_string_encoding(lr_eval_string("{address}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"addrUtf8");
所以全部的代码是:
lr_convert_string_encoding("lr_eval_string("{address}")",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"addrUtf8");
lr_save_string(lr_eval_string("{addrUtf8}"),"addurl");
web_convert_param("addurl","SourceEncoding=PLAIN","TargetEncoding=URL",LAST);
lr_output_message("URL转码后地址是addurl------%s",lr_eval_string("{addurl}"));
web_url("ceshi_csb_broker",
"URL=http://xxx.x.xxx.xx/test-web/testTx.action?address={addurl}",
"Resource=1",
"RecContentType=application/json",
"Referer=",
"Snapshot=t1.inf",
LAST);
best wishes~~