问题描述
我有一个 JMeter HTTP-Request 元素,它执行 POST 调用,如:
{
"id" : 1,"name" : "me"
}
我想在 BeanShell PreProcessor
上加载此请求正文并修改 name
字段,我该如何实现?
解决方法
回答我自己的问题:
-
获取请求正文:
String requestBody = sampler.getArguments().getArgument(0).getValue();
-
修改请求(就我而言,我将其修改为解析后的
JSONObject
) -
将修改后的请求正文设置为当前请求:
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)
更多信息: