我有一个使用Apach JMeter的问题 .
我们的项目,Android应用程序将带有“Gzip压缩”的json数据发布到API服务器 . Android应用程序使用“Apache HttpClient”和它的“GzipCompressingEntity”类 .
对于API服务器的性能测试,我尝试通过JMeter的代理(=“HTTP(S)测试脚本 Logger ”)记录请求 . 但记录的请求正文是空的 .
我想要做的是从Apache JMeter发送“Gziped HTTP request data ”到服务器 . 那有什么办法吗?
以下是我们的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
RequestBody is Gziped binary data.
我做的是
-
在JMeter上运行"HTTP(S) Test Script Recorder(Proxy Server)" .
-
设置Android的http代理以使用该代理服务器 .
-
执行HTTP Client的Android测试代码(帖子数据由Gzip压缩) .
然后,该测试代码以失败告终 . (服务器无响应)
如果直接访问(没有JMeter的代理服务器),该测试成功 . 我可以像这样从JMeter发送压缩的请求数据吗?
2 回答
将HTTP Header Manager添加到您的测试计划并添加至少以下 Headers :
Content-Type:application / json
Content-Encoding:gzip
添加Beanshell PreProcessor作为您需要编码的请求的子项,并将以下代码添加到"Script"区域:
它将获取您的请求正文,压缩它并在运行中替换,因此请求将被gzip压缩 .
编码是错误的,你需要像这样将它保存在体内