LoadRunner模拟客户端发送JSON格式的请求
十二.25, 2008 in
性能测试
JSON格式的数据现在用的越来越多,在MySpace.CN,存在着2中web应用,一种是基于.NET平台的web应用,另一种是记录LAMP平台的web应用,要让这两种应用能够互相通信,需要制定一种通信格式,当时选择的就是JSON格式。今天接到一个任务,是要对一个批量获取用户数据的接口进行测试,这个接口介绍JSON格式的请求,返回JSON格式的结果。由于最近LAMP团队比较忙,而且我又不太懂怎么弄一个提交JSON的页面,所以只能找找LoadRunner有没有一些函数可以用。最终找到了web_custom_request这个函数。
1 2 3 4 5 6 7 8 9 10 11 | web_custom_request("request", //随便写个名字 "Method=POST", //请求的方法 "URL=http://10.60.0.13:8002/json/getUserAccounts", //请求地址 "RecContentType=application/json", //指定相应头的Content-Type,这里是JSON "EncType=application/json", //指定请求头的Content-Type,这里也是JSON "Mode=HTML", RAW_BODY_START, //请求BODY开始的标识符 "{\"userIds\":[1300000001,1300002029,1300003163],\"type\":0}", //BODY的内容 55, //上面一行BODY内容的长度 RAW_BODY_END, //请求BODY结束的标识符 LAST); |
这样就是一个发起JSON格式请求,接受JSON格式数据的请求了。也是我写的第一个LR脚本,居然还不是录制的……
在这里介绍一个计算BODY内容的长度的方法:
- 在Firefox上装好firebug这个插件
- 打开Firefox,然后打开控制台
- 在控制台里面输入BODY内容,然后用.length属性来获取该字符串的长度,如果对于上面这个例子,就是|| “{\”userIds\”:[1300000001,1300002029,1300003163],\”type\”:0}”.length ||,这样就能计算出结果“55”
很方便吧。而且还不会出错,不用数转义字符数目。
No related posts.

六月 30th, 2010 at 09:09
你好请教你个问题,我现在做JSON数据的接口性能测试:如下
写的脚本如下:
Action()
{
web_custom_request(“request1″
“URL = http://61.145.165.154:8080/uc/json“,
“Method = POST”,
“Resource=1″,
“RecContentType = uc/json”,
“EncType = uc/json”,
“Mode = HTTP”,
RAW_BODY_START,
// “{action:\”DeviceActive\”,device:{deviceid:\”abc\”, devmodel:\”abc\”}}”,
//”body = deviceid = b90f632d06cf51a176c36be73cb725d516d7c77f”
“{action:\”DeviceActive\”, device:{deviceid:\”b90f632d06cf51a176c36be73cb725d516d7c77f\”,devmodel:\”1\”}}”,
//”{device:{deviceid:\”b90f632d06cf51a176c36be73cb725d516d7c77f\”,devmodel:\”1\”}}”
//55,
RAW_BODY_END,
LAST);
//return 0;
}
运行报如下错:
Action.c(3): Error -27226: The “Method = POST” argument (number 2) is unrecognized or misplaced [MsgId: MERR-27226]
Action.c(3): web_custom_request(“request1URL = http://61.145.165.154:8080/uc/json“) highest severity level was “ERROR”, 0 body bytes, 0 header bytes [MsgId: MMSG-26388]
请指教谢谢!
七月 1st, 2010 at 20:26
如果你发的请求就是贴在这里的代码的话,是不是双引号有问题?我贴出来以后看双引号是中文符号的双引号,不是英文的。