如何使用Apache JMeter张贴GZip请求

我对使用Apach JMeter有疑问。

我们的项目Android应用将具有“ Gzip压缩”功能的json数据发布到API服务器。使用“ Apache HttpClient”及其“

GzipCompressingEntity”类的Android应用。

为了对API服务器进行性能测试,我尝试通过JMeter的代理(=“ HTTP(S)Test Script

Recorder”)记录请求。但是记录的请求正文为空。

我想要做的是将“ Gziped HTTP ”从Apache JMeter发送到服务器。有什么办法吗?

以下是我们的Android应用的请求标头示例。

POST /api/test HTTP/1.1

Content-Type: application/json

Transfer-Encoding: chunked

Content-Encoding: gzip

Host: 192.168.11.11:8080

Connection: Keep-Alive

User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.5)

Accept-Encoding: gzip,deflate

我所做的是

  1. 在JMeter上运行“ HTTP(S)测试脚本记录器(代理服务器)”。
  2. 将Android的http代理设置为使用该代理服务器。
  3. 执行HTTP客户端的Android测试代码(发布数据由Gzip压缩)。

然后,该测试代码以失败告终。(服务器未响应)

如果直接访问(没有JMeter的代理服务器),则该测试成功。我可以像这样从JMeter发送压缩的请求数据吗?

回答:

  1. 将HTTP标头管理器添加到您的测试计划,并至少添加以下标头:

    • 内容类型:application / json
    • 内容编码:gzip
    • 将Beanshell PreProcessor添加为您需要编码的请求的子代,并将以下代码添加到其“脚本”区域:

        import org.apache.commons.io.IOUtils;

import java.util.zip.GZIPOutputStream;

String bodyString = sampler.getArguments().getArgument(0).getValue();

byte [] requestBody = bodyString.getBytes();

ByteArrayOutputStream out = new ByteArrayOutputStream(requestBody.length);

GZIPOutputStream gzip = new GZIPOutputStream(out);

gzip.write(requestBody);

gzip.close();

sampler.getArguments().getArgument(0).setValue(out.toString(0));

它将获取您的请求主体,对其进行压缩并即时替换,以便将请求压缩。

以上是 如何使用Apache JMeter张贴GZip请求 的全部内容, 来源链接: utcz.com/qa/410397.html

回到顶部