我用RESTful应用程序接口测试了一个服务,这些方法接收包含二进制数据的POST请求。我使用JMeter进行测试。但是我在使用这个工具发出这样的请求时遇到了麻烦。
我使用BeanShell采样器生成二进制数据并将其放入变量中
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请求,在主体数据中我放入了${bytes}
,以便让它从变量中读取原始字节,并在POST请求中发送它。但是随后我得到了一个异常"java.lang.ClassCastException:[B cannot be cast to java.lang.String",这意味着在正文数据中,给定的变量bytes
被转换为string。非常类似的问题是Sending HTTP requests with binary body using JMeter,但在评论中也有关于字符串类型转换的相同结论。也许可以通过请求发送一个文件来完成?
有一个插件HTTP Raw请求,但我找不到一种方法将请求发送到具体的API方法,而插件只有port字段(也许在port后面写一个方法路径?),并且我找不到向它传递字节的方法。
发布于 2017-01-27 10:56:35
我设法使用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
https://stackoverflow.com/questions/41862223
复制相似问题