如何使用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.1Content-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
我所做的是
- 在JMeter上运行“ HTTP(S)测试脚本记录器(代理服务器)”。
- 将Android的http代理设置为使用该代理服务器。
- 执行HTTP客户端的Android测试代码(发布数据由Gzip压缩)。
然后,该测试代码以失败告终。(服务器未响应)
如果直接访问(没有JMeter的代理服务器),则该测试成功。我可以像这样从JMeter发送压缩的请求数据吗?
回答:
将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