使用BSF预处理器发送JSON POST请求

Pri*_*ank 8 javascript performance jmeter

我正在与JMeter合作编写一些性能测试.我需要做的一件事是动态构造一个巨大的json请求并将其作为POST请求paylod发送.使用BSF预处理器,我能够动态修改有效负载,但我的javascript字符串正在编码,而我想发送它而不进行编码.

我不确定BSF预处理器如何阻止它被编码.我当前用来更改POST请求有效负载的命令如下:

var jsonData = '[{"item":"value","something":"everything"}]';
sampler.addArgument("",jsonData);
Run Code Online (Sandbox Code Playgroud)

如果您能指出一些清楚解释如何使用bsf预处理器的示例,我将非常感激.

任何跳过编码的指针也将受到赞赏.

UBI*_*ACK 1

从 JMeter 2.6 开始,您可以通过Post Body选项卡使用 RAW 请求窗格。

因此,您的解决方案是执行以下操作:

  1. 在 BSF Sampler 中,将 JSON 放入变量中:

    var jsonData = '[{"item":"value","something":"everything"}]';
    vars.putObject("jsonData",jsonData);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在帖子正文中,输入:

    ${jsonData}
    
    Run Code Online (Sandbox Code Playgroud)

使用您的方法的另一个选择是使用 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);
Run Code Online (Sandbox Code Playgroud)

问候

菲利普·M.