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

时间:2017-01-25 21:46:26

标签: jmeter jmeter-plugins

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

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

Excel.Application

然后是HTTP请求,在Body Data中我放置了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); ,以便从变量中读取原始字节并在POST请求中发送它。但后来我得到一个异常" java.lang.ClassCastException:[B不能转换为java.lang.String",这意味着在Body Data中,给定变量${bytes}被强制转换为字符串。 相似的问题是Sending HTTP requests with binary body using JMeter但是在评论中对字符串转换做了相同的结论。 也许可以通过发送带有请求的文件来完成?

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

1 个答案:

答案 0 :(得分:3)

我设法使用HTTP请求使用二进制正文数据发出POST请求。为了做到这一点,我添加了一个条目"发送带有请求的文件"并且仅填充文件路径字段(不带参数名称和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