loadrunner中文轉url編碼或者中文轉HTML編碼
阿新 • • 發佈:2021-05-16
這兩天工作的時候,測試一個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("{address}",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"addrUtf8");
所以全部的程式碼是:
lr_convert_string_encoding("{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~~