使用 JMETER 向带有二进制主体的 RESTful API 发出 POST 请求

Making POST request to a RESTful API with binary body using JMETER

我用 RESTful API 测试服务,方法接收 POST 二进制数据请求。 我使用 JMeter 进行测试。但是我在用这个工具提出这样的请求时遇到了麻烦。

我使用BeanShell Sampler制作二进制数据并放入变量中

import java.util.Base64;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.codec.binary.Base64;

String base64Str="Some string";
//Encode the string
byte[] bytes = Base64.encodeBase64(base64Str.getBytes());
vars.putObject("bytes", bytes);

然后是 HTTP 请求,我在 Body Data 中放置了 ${bytes} 以使其从变量中读取原始字节并将其发送到 POST 请求中。但是后来我得到一个异常 "java.lang.ClassCastException: [B cannot be cast to java.lang.String",这意味着在 Body Data 中给定的变量 bytes 被转换为字符串。 相当相似的问题是 但在评论中对字符串转换做出了相同的结论。 也许可以通过请求发送文件来完成?

有一个 HTTP Raw Request 插件,但我找不到将请求发送到具体 API 方法的方法,而该插件只有端口字段(也许在端口后面写一个方法路径?) ,我找不到向它传递字节的方法。

我设法使用 HTTP 请求发出了一个包含二进制正文数据的 POST 请求。为此,我在 "Send files with the request" 中添加了一个条目,并仅填充了文件路径字段(没有参数名称和 MIME 类型)。 JMeter 读取给定的文件,在这种情况下发送它的字节作为 POST 请求的主体。

答案在这里找到 https://qnalist.com/questions/698175/does-jmeter-support-sending-arbitrary-binary-data-in-the-body-of-a-post 并导致手动 http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request