LoadRunner模拟客户端发送JSON格式的请求

JSON格式的数据现在用的越来越多,在MySpace.CN,存在着2中web应用,一种是基于.NET平台的web应用,另一种是记录LAMP平台的web应用,要让这两种应用能够互相通信,需要制定一种通信格式,当时选择的就是JSON格式。今天接到一个任务,是要对一个批量获取用户数据的接口进行测试,这个接口介绍JSON格式的请求,返回JSON格式的结果。由于最近LAMP团队比较忙,而且我又不太懂怎么弄一个提交JSON的页面,所以只能找找LoadRunner有没有一些函数可以用。最终找到了web_custom_request这个函数。

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内容的长度的方法:

  1. 在Firefox上装好firebug这个插件
  2. 打开Firefox,然后打开控制台
  3. 在控制台里面输入BODY内容,然后用.length属性来获取该字符串的长度,如果对于上面这个例子,就是|| “{\”userIds\”:[1300000001,1300002029,1300003163],\”type\”:0}”.length ||,这样就能计算出结果“55”

很方便吧。而且还不会出错,不用数转义字符数目。

7 thoughts on “LoadRunner模拟客户端发送JSON格式的请求”

  1. 你好请教你个问题,我现在做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]

    请指教谢谢!

    1. 如果你发的请求就是贴在这里的代码的话,是不是双引号有问题?我贴出来以后看双引号是中文符号的双引号,不是英文的。

      1. 请教一下,为什么import net.sf.json.JSONObject;

        public class Actions
        {

        public int init() throws Throwable {
        return 0;
        }//end of init

        public int action() throws Throwable {

        JSONObject json= new JSONObject();

        return 0;
        }//end of action

        public int end() throws Throwable {
        return 0;
        }//end of end
        }
        在 new JSONObject();会报错

  2. 如果是服务器端接收到Json之后,会返还给客户端一个Json。
    客户端这边要怎么样能呢到这个Json呢?因为想试着对这个Json的内容进行解析,所以要先得到返回的Json

Leave a Reply

Your email address will not be published. Required fields are marked *