本文主要介绍Loadrunner Http协议中常用发送POST请求方法web_submit_data与web_custom_request区别。
1. 实现的功能不同
web_submit_data只能发送POST类型的请求
web_custom_request方法可以发送POST和GET类型的请求
2. 请求数据提交方式不同
web_submit_data以"Name=属性名称,","Value=属性值" 方式提交数据,如:
"Name=username", "Value=admin", ENDITEM,
"Name=age", "Value=20", ENDITEM,
web_custom_request以"Body=属性名称=属性值&属性名称=属性值"方式提交数据,如:
"Body=username=admin&age=20"
示例如下:
1234567891011121314151617181920212223 | web_submit_data("login", "Action=http://192.168.1.1:8080/login", "Method=POST", "RecContentType=text/html", "Mode=HTML", ITEMDATA, "Name=username", "Value=12044″, ENDITEM, "Name=password", "Value=", ENDITEM, "Name=solutionName", "Value=eas", ENDITEM, "Name=dbType", "Value=1", ENDITEM, "Name=userAuthPattern", "Value=BaseDB", ENDITEM, "Name=loginFlow", "Value=true", ENDITEM, LAST); web_custom_request("web_custom_request″, "URL=http://192.168.1.1:8080/query", "Method=POST", "Resource=0″, "RecContentType=text/javascript", "Mode=HTML", "EncType=application/x-www-form-urlencoded;charset=UTF-8″, "Body=username=admin&age=20", LAST); |
通过观察,有两种情况下的POST请求会被LoadRunner录制为web_custom_request,
1.批量提交多条同属性名称的数据的请求
2.header属性x-requested-by值为XMLHttpRequest的POST请求
这两种实现请求的方法还有一个需要注意的地方就是web_custom_request中body中的属性值如果包含一些特殊字符,必须通过URL编码,否则Web服务器会返回500错误。
一个典型的例子是如果Body中包含ViewState,而ViewState中常含有"="之类的特殊字符,此时必须通过URL编码。
此时,我们可以使用LoadRuner中提供的编码转换函数web_convert_param("vs1″,"SourceEncoding=HTML","TargetEncoding=URL",LAST);
原文链接:http://lovesoo.org/loadrunner-web-submit-http-protocol-differences-between-data-and-web-custom-request.html