使用 JMeter 发送带有二进制正文的 HTTP 请求

2023-12-26

我正在尝试使用 JMeter 发送带有二进制内容的 HTTP 请求。 在文档中,我发现我可以发送带有二进制内容的文件。我认为这对于我的需求来说不是一个好的解决方案,因为每个请求都有自己的二进制内容。

下面是我用 Perl 编写的客户端示例,演示了我试图完成的任务:

$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.

有任何想法吗? 谢谢, 尤瓦尔


使用 JMeter 是可能的。我建议使用

  1. Beanshell 预处理器 http://jmeter.apache.org/usermanual/component_reference.html#BeanShell_PreProcessor构造请求的正文并将其存储到 JMeter 变量(您不需要计算内容长度,因为 JMeter 足够智能,可以为您完成此操作)
  2. 使用 Beanshell 预处理器中生成的“主体数据”设置 HTTP 采样器(在主体生成代码结束时,您需要执行类似的操作vars.put("mybody",generatedbodystring);。在你的 HTTP Sampler 中你可以参考mybody变量为${mybody} or ${__V(mybody)}
  3. Adding HTTP 标头管理器 http://blazemeter.com/blog/using-jmeters-http-header-manager将 Content-Type 设置为“应用程序/二进制”

HTTP 标头管理器和 BeanShell 预处理器必须children您的 HTTP 请求。

您可以使用调试采样器和查看结果树侦听器来检查请求/响应详细信息和正在发送的数据。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JMeter 发送带有二进制正文的 HTTP 请求 的相关文章

随机推荐