我使用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方法,而插件只有端口字段(可能在端口后写一个方法路径?),我找不到将字节传递给它的方法。
答案 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