如何在Jmeter中处理JSON请求帖子主体中的动态值

时间:2018-08-23 05:53:50

标签: jmeter

我是Jmeter的新手,搜索了很多内容,但找不到解决方案。感谢您的帮助。谢谢。

问题- 在我的http请求中,我有以下内容 我的实际要求是

{
  "Summary": {
    "source": {
      "Name": "Phones",
      "dataSource": "Oracle",
      "dbType": "${Value}",
      "sid": "${sUsername}",
      "spswd": "${sPassword}",
      "aut": "${win}",    
      "PrjName": "${sourceprojectName}"
    },
    "Destination": {
      "dataSource": "SQL",
      "projectName": "${destprojectName}",
      "server": "${urlValue}"
      "destUsrName": "${dUsername}",
      "destPswd": "${dPassword}",
    },
    "Notifiction": "True",
    "Time": "dd:mm:yy",
    "Config": true,
    "Properties": [
      {
        "type": "iPhone",
        "ids": [
          {
            "id": "f132d",
            "Guid_id": null
          },
          {
            "id": "6332569",
            "Guid_id": null
          },
          {
            "id": "5b55d2f",
            "Guid_id": null
          },
          {
            "id": "81f1330",
            "Guid_id": null
          }
        ]
      }
    ]
  },
  "Execute": true
}

请求中的ID是动态的,因此我想对其进行参数化。 使用Json提取器,我从另一个响应中获得了这些ID。 所有这些ID都在数组中。 id=["f132d","6332569","5b55d2f","81f1330"]

现在我不知道如何将这些ID放入我的请求正文中。请协助

1 个答案:

答案 0 :(得分:-1)

您可以如下生成所需的请求正文:

  1. JSR223 PreProcessor添加为请求的子项,您希望使其成为动态主体
  2. 将以下代码放入“脚本”区域:

    def ids = new groovy.json.JsonSlurper().parseText(vars.get('id'))
    def builder = new groovy.json.JsonBuilder()
    builder(Properties:[ [type: "iPhone", ids: ids.collect {[id: it,"Guid_id": null]}]])
    sampler.getArguments().removeAllArguments()
    sampler.addNonEncodedArgument('',builder.toPrettyString(),'')
    sampler.setPostBodyRaw(true);
    

更多信息: