我正在与JMeter合作编写一些性能测试。我需要做的一件事是动态构造一个巨大的json请求并将其作为POST请求paylod发送。使用BSF预处理器,我能够动态修改有效负载,但我的javascript字符串正在编码,而我想发送它而不进行编码。
我不确定BSF预处理器如何阻止它被编码。我当前用来更改POST请求有效负载的命令如下:
var jsonData = '[{"item":"value","something":"everything"}]';
sampler.addArgument("",jsonData);
如果您能指出一些清楚解释如何使用bsf预处理器的示例,我将非常感激。
任何跳过编码的指针也将受到赞赏。
答案 0 :(得分:1)
从JMeter 2.6开始,您可以使用帖子正文标签来使用RAW请求窗格。
因此,您的解决方案是执行以下操作:
在BSF Sampler中,将JSON放在变量中:
var jsonData = '[{"item":"value","something":"everything"}]';
vars.putObject("jsonData",jsonData);
在Post Body中,放:
${jsonData}
使用您的方法的另一个选择是使用Beanshell语言(而不是javascript)放入BSFPreProcessor:
import org.apache.jmeter.protocol.http.util.HTTPArgument;
String jsonData = "[{\"item\":\"value\",\"something\":\"everything\"}]";
HTTPArgument arg =new HTTPArgument("", jsonData, null, true);
arg.setAlwaysEncoded(false);
sampler.getArguments().addArgument(arg);
此致
Philippe M。
答案 1 :(得分:-1)
将您的采样器“HTTPArgument.always_encode”上的属性设置为false,这应禁用参数编码