使用JMeter发送带有二进制体的HTTP请求
我正在尝试使用JMeter发送包含二进制内容的HTTP请求。 在文档中,我发现我可以发送包含二进制内容的文件。我认为这不是一个很好的解决方案,因为每个请求都有自己的二进制内容 下面是我用Perl编写的一个客户机示例,演示了我试图实现的目标:使用JMeter发送带有二进制体的HTTP请求,jmeter,Jmeter,我正在尝试使用JMeter发送包含二进制内容的HTTP请求。 在文档中,我发现我可以发送包含二进制内容的文件。我认为这不是一个很好的解决方案,因为每个请求都有自己的二进制内容 下面是我用Perl编写的一个客户机示例,演示了我试图实现的目标: $date_time = sprintf "%08X", time(); $BODY_TEMPLATE = "00${date_time}0015"; $body_len = (length (sprintf($BODY_TEMPLATE,0,0))) /
$date_time = sprintf "%08X", time();
$BODY_TEMPLATE = "00${date_time}0015";
$body_len = (length (sprintf($BODY_TEMPLATE,0,0))) / 2;
# Here I set $TARGET & $HOST
$MSG_HEADER = "POST \/unil?URL=${TARGET} HTTP\/1.1\r\nHost: ${HOST}\r\ncontent-type:application/binary\r\ncontent-length: ${body_len}\r\n\r\n";
$body = pack ("H*", $BODY_TEMPLATE);
$message_to_send = $MSG_HEADER . $body;
# at this point I sent the entire message over a TCP socket I previously opened.
有什么想法吗?
谢谢
Yuval使用JMeter是可能的。我建议使用
vars.put(“mybody”,generatedbodystring”);
。在HTTP采样器中,您可以将mybody
变量引用为${mybody}
或${{uu V(mybody)}
希望这有帮助。谢谢Dmitri。我对Beanhell(和Java)是新手。我发现通过使用:javax.xml.bind.DatatypeConverter.parseHexBinary(十六进制字符串),我可以将二进制数据转换为在代码中使用。一旦我将所有内容组合在一起,我希望它能工作。Dmitri,你为什么建议使用“generatedbodystring”当作者请求二进制数据时?我现在也有同样的问题-无法发送二进制POST请求,即使我在BeanShell中执行“vars.putObject(“mybody”,byteArray)”。然后在HTTP请求的正文数据中,Jemeter在发送前隐式执行该数组的“toString()”,我不知道为什么以及如何修复它:(我在中尝试了代码,但二进制数据在转换为字符串时被破坏。我会使用HTTP原始请求采样器,但它不能与https一起工作。通过使用vars.put(“requestBody”,new string(requestBody,“ISO-8859-1”);我至少能够获得要发送以正确显示的部分pdf。