当前位置: 首页 > 面试题库 >

如何使用Apache JMeter张贴GZip请求

农鸿德
2023-03-14
问题内容

我对使用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

RequestBody是Gziped二进制数据。

我所做的是

  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));

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



 类似资料:
  • 问题内容: 我正在尝试使用类似于以下内容的InputStream来执行POST: 在这种情况下,InputStream来自压缩的tar文件。 张贴InputStream的正确方法是什么? 问题答案: 我在这里想到的唯一解决方案是使用TypeFile类: 和接口(这次没有显式设置Content-Type标头): 使用我自己的TypedInput实现会导致模糊的EOF异常,即使我提供了length()

  • 问题1:就REST API而言,这是在Spring Hateoas中处理关系的正确方式吗? 问题2:如何将控制器中的url解析为数据上的可用句柄(例如,对适当控制器/方法的引用、主键等) 研究

  • 我正在使用angularJS asp。net进行post请求,但请求无效。表单总是空的。这是我的密码 指数cshtml 家庭控制器。反恐精英 请求。表单总是空的,但是我可以在post请求的请求体中看到一个电话条目,所以我想知道我是否提取了错误的数据。网

  • 问题内容: 我正在尝试登录此网站:http : //deeproute.com 这是我的代码。 不幸的是,这只是以未登录状态返回同一页面。我究竟做错了什么? 问题答案: 您需要在发布前阅读表格!您缺少param subbera =登录。

  • 因此,我试图让一个不和谐机器人在服务器上的特定通道中发布消息,因为它只发布到#Everyone。我已经看了许多其他的帖子,似乎无法得到它。我是个完全的javascript白痴,只知道非常基本的基础知识。目标是当用户在一个通道中说“test”时,机器人将把“test”输出到一个特定的通道中,用于记录某些响应。(当用户说了一些他们不应该说的话时,这将成为一个冒犯日志)。到目前为止,我的代码是这样的:

  • 问题内容: 我找到了一些有关如何启用gzip的教程,但似乎对我没有任何帮助,所以我的问题是如何启用gzip。我在共享的Dreamhost托管服务器上,它正在运行PHP版本5.2,并且Apache从PHP信息中找到了这一行,这可能有所帮助吗? 我也找到了这条线 我不知道这是否与它有关。但这是我的第一个问题,其次,我有一个存放着Javscript文件的保管箱,我想知道是否可以将该文件压缩成文件,而不是