【发布时间】:2021-03-08 21:58:09
【问题描述】:
我有一个 JMeter HTTP-Request 元素,它执行如下的 POST 调用:
{
"id" : 1,
"name" : "me"
}
我想在BeanShell PreProcessor 上加载此请求正文并修改name 字段,我该如何实现?
【问题讨论】:
我有一个 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)
更多信息:
【讨论】: