tf-*_*awa 4 gzip jmeter httprequest
我有一个关于使用 Apach JMeter 的问题。
我们的项目,Android 应用程序将带有“Gzip 压缩”的 json 数据发布到 API 服务器。Android 应用程序使用“Apache HttpClient”及其“GzipcompressingEntity”类。
为了API服务器的性能测试,我尝试通过JMeter的代理(=“HTTP(S)测试脚本记录器”)记录请求。但记录的请求体是空的。
我想要做的是将“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
Run Code Online (Sandbox Code Playgroud)
RequestBody 是压缩的二进制数据。
我所做的是
然后,该测试代码以失败告终。(服务器无响应)
如果直接访问(无需JMeter的Proxy Server),则测试成功。我可以像这样从JMeter发送压缩的请求数据吗?
将HTTP 标头管理器添加到您的测试计划中,并至少添加以下标头:
添加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));
Run Code Online (Sandbox Code Playgroud)
它将获取您的请求正文,对其进行压缩并动态替换,以便对请求进行 gzip 压缩。
| 归档时间: |
|
| 查看次数: |
6818 次 |
| 最近记录: |