JMeter,对样本进行后处理

时间:2018-12-21 20:26:53

标签: java jmeter jmeter-plugins

在我的项目中,我想为JMeter实现一个插件。

所以目前我被困在采样器上-后处理步骤。

@Override
public void postProcessSampler(HTTPSamplerBase sampler, SampleResult result) 
{
    super.postProcessSampler(sampler, result);
    String postData = sampler.getPropertyAsString(HTTPSamplerBase.ARGUMENTS);

    // ...
    // apply some operations to postData
    // ...
    // 
    // try to write it back to sampler : approach1
    //      sampler.removeProperty(HTTPSamplerBase.ARGUMENTS);
    //      sampler.addNonEncodedArgument(HTTPSamplerBase.ARGUMENTS, postData, "");
    // Fails
}

因此,在后处理步骤中,我想更改请求正文,通常将其存储在HTTPSamplerBase.ARGUMENTS属性中。但是,以某种方式,我无法对此字段进行任何设置。用另一个字符串重新定义它会给我一个类转换错误。如果我尝试使用字符串进行操作,则会得到调用异常...

所以我的问题是,更改采样器的帖子主体的正确方法是什么?

致谢,谢谢

1 个答案:

答案 0 :(得分:1)

请尝试使用HTTPSamplerBase.getArguments() function,示例代码:

sampler.getArguments().removeAllArguments();
sampler.addNonEncodedArgument("foo","bar","");
sampler.setPostBodyRaw(true);

另外请注意,对于这种形式的后期处理,您甚至都不需要提供插件,所有操作都可以通过JSR223 PostProcessorGroovy语言完成。上面的代码应该可以正常工作