JMeter BeanShell PreProcessor 修改请求

问题描述

我有一个 JMeter HTTP-Request 元素,它执行 POST 调用,如:

{
  "id" : 1,"name" : "me"
}

我想在 BeanShell PreProcessor 上加载此请求正文并修改 name 字段,我该如何实现?

解决方法

回答我自己的问题:

  1. 获取请求正文:

    String requestBody = sampler.getArguments().getArgument(0).getValue();

  2. 修改请求(就我而言,我将其修改为解析后的 JSONObject

  3. 将修改后的请求正文设置为当前请求:

    sampler.getArguments().getArgument(0).setValue(modifiedRequestObject.toString());

,

Since JMeter 3.1 you're supposed to be using JSR223 Test Elements and Groovy language for scripting 所以我建议重新考虑你的“Beanshell”方法。

以下是一段示例 Groovy 代码,展示了如何修改请求:

def payload = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue())

payload.name = 'some new name'

sampler.getArguments().clear()
sampler.addNonEncodedArgument('',new groovy.json.JsonBuilder(payload).toPrettyString(),'')
sampler.setPostBodyRaw(true)

更多信息: