Maksim Melnik
Maksim Melnik

Reputation: 555

JMeter, postprocessing a sample

in my project i would want to implement a plugin for JMeter.

So currently I am stuck at sampler - postprocessing step.

@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
}

So at the postprocessing step i would like to change the request body, whcih is usually stored in HTTPSamplerBase.ARGUMENTS property. However, somehow i cannot set anything to this field. Redefining it with another string gives me a class cast error. If I try operating with strings, then i get invocation exception...

So my question is, what is the correct way to change the sampler's post body?

Regards and thank you

Upvotes: 0

Views: 114

Answers (1)

Dmitri T
Dmitri T

Reputation: 168092

Try out HTTPSamplerBase.getArguments() function instead, example code:

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

Also be aware that for this form of post-processing you don't even need to come up with a plugin, all can be done via JSR223 PostProcessor and Groovy language. The above code should work just fine

Upvotes: 1

Related Questions