如何在Jmeter中的http请求中发送字节数组

时间:2014-04-16 06:42:11

标签: file-upload jmeter load-testing

我正在使用j meter进行负载测试,我必须通过http请求调用上传Image API并实现此目的,我必须将图像转换为压缩字节数组,以通过http请求将其作为发布数据发送出去。

任何人都可以通过jmeter帮助我如何实现。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

有几种方法可供选择:

  1. 您可以使用HTTP Raw Request采样器(可通过JMeter Plugins网站获得),它可让您完全控制发送的内容,方式和位置。

  2. 您是否尝试为HTTP请求采样器启用Use multipart/form-data for POST?这是根据RFC-1867上传文件的方式。

  3. 如果您的用例是特定的,并且以上都不适用,则可以始终使用JMeter Scripting扩展。例如,如果您向HTTP请求添加Beanshell Pre Processor,该请求使用以下内容执行文件上载:

    FileInputStream in = new FileInputStream("/home/glinius/401.png");
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    for (int i; (i = in.read(buffer)) != -1; ) {
        bos.write(buffer, 0, i);
    }
    in.close();
    byte[] imageData = bos.toByteArray();
    bos.close();
    vars.put("imageData", new String(imageData));
    
  4. 您可以在POST请求中添加${imageData}参数。

答案 1 :(得分:1)

是的,我按照这种方法“将Beanshell预处理器添加到您的HTTP请求中”,并且成功。

对于我的情况,我还添加了一个“HTTP Header Manager”,指定:“Content-Encoding:gzip”,“Content-Type:”application / x-www-form-urlencoded“,”Accept: / ”。 并且,设置字符串编码:vars.put(“binaryData”,new String(binThrift,“ISO-8859-1”));

HTTP Header Manager

Beanshell Pre Processor

HTTP Request

Real Request