那啥,在loadrunner使用过程中,因为中文而跌倒的已经不止一回了。
总结一下吧。
1.使用loadrunner的web_custom_request函数进行webserivce协议的脚本开发时,发现当发送的报文中含有中文时,字符集charset=utf-8时,无法接收正确的报文,解决方法,可以将这段charset注释掉,我设置成charset=gb2312,也能正确返回报文。原因不明。
脚本如下:
web_custom_request("Sample_Request","Method=POST",
"Mode=HTML",
"RecContentType=text/xml",
"EncType=text/xml; charset=gb2312",
"URL=http://172.16.13.213:8002/service/pmi/userExtend?wsdl",
"Body=<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.user.webservice.pmis.jit.com.cn/\"><soapenv:Header/><soapenv:Body><api:queryUserInfo><arg1><userList><attrs><attrValues><attrValueName>{usercode}</attrValueName></attrValues><name>用户编号</name></attrs></userList></arg1></api:queryUserInfo></soapenv:Body></soapenv:Envelope>",LAST);
2.在使用socket协议进行测试时,发送报文含有中文的时候,服务器接收后无法识别。上面的方法行不通。网上看来一个法子,将参数化的文件转换成utf-8,就能很好的解决了。成功。
补充:有些汉字转换成utf-8时,会出现特殊字符,例如安全管理员会转成 瀹夊叏淇濆瘑绠$悊鍛\x98 ,有说使用
lrs_length_send("socket0","buf0",0,LrsLastArg);
解决的,但是,我没有解决成功。待续。
3.http协议进行测试的时候,如果请求内容包含中文可以用以下的函数进行替换。
char buffer[80];
lr_convert_string_encoding( lr_eval_string("<mytest>"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str" );
lr_log_message("str is str %s",lr_eval_string("<str>"));
strcpy(buffer, lr_eval_string("<str>"));
lr_save_string(buffer,"sorvalue");
//lr_log_message("str orvalue is %s",lr_eval_string("<sorvalue>"));
话说,loadrunner对中文的处理可是真不咋样啊。