POST请求正文中的Jmeter变量并在发送请求之前更改它

时间:2018-06-03 03:16:06

标签: jmeter

我有一个发布HTTP请求,其主体中有一个变量&XML;此变量将hostName作为变量,即:123 @ host

 <Type>myType</Type>
  <FolderPath>Automation</FolderPath>
  <Description />
  <dest>123@host</dest>
  <Notes />

在JSR223预处理器中我喜欢将主机更改为$ {host}。我知道我必须用字符串读取正文然后改变它:

body = body.replaceAll("host", vars.get("host") );

如何在字符串中读取正文然后更改HTTP请求正文,然后在发送请求之前将其放回HTTP Post正文中?

2 个答案:

答案 0 :(得分:0)

通过使用预处理器,您走在正确的轨道上。接下来,您应该将该字符串放回相同或新变量中。

您可以将该主体放回同一个变量:

vars.put("host",body);

或者您可以通过调用以下方式更改采样器:

sampler."method"

您可以在此链接上找到所有可用的方法: Sampler Methods

希望这有帮助。

答案 1 :(得分:0)

您正在寻找的功能是HTTPSamplerBase.addNonEncodedArgument()

使用相关Groovy替换host的示例JMeter Variable代码如下:

def body = sampler.getArguments().getArgument(0).getValue()
body = body.replaceAll('host',vars.get('host'))
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('',body,'')
sampler.setPostBodyRaw(true)