jMeter 解析 gzipped 响应 xml

jMeter parse gzipped response xml

作为我的 jMeter 方案的一部分,我从服务器上压缩 xml。 我尝试添加 header Accept-encoding: gzip,deflate,sdch 但它似乎没有效果。

我怎样才能将它放气以便在其上使用 XPath 提取器?

谢谢

如果您的问题是关于如何将 gzip 压缩的响应转换为普通 XML,可以使用 Beanshell PostProcessor

来完成

Beanshell 后处理器执行时间不包括在父采样器响应时间中。它在采样器之后执行,在您的情况下可用于解压缩响应并用解压缩的 XML 替换父采样器的响应主体。

Beanshell 后处理器的示例代码:

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStreamReader;
import java.util.zip.GZIPInputStream;

ByteArrayInputStream bis = new ByteArrayInputStream(data);
GZIPInputStream gis = new GZIPInputStream(bis);
InputStreamReader reader = new InputStreamReader(gis);
BufferedReader in = new BufferedReader(reader);
byte[] decompressed = IOUtils.toByteArray(in);
prev.setResponseData(decompressed);

哪里

  • data - 是一个 shorthand 到包含父采样器响应主体的字节数组
  • prev - 表示 SampleResult 实例访问,SampleResult 提供 read/write 访问采样器执行期间记录的信息。

有关 Apache JMeter 中 Beanshell 脚本的更多信息,请参阅 How to use BeanShell: JMeter's favorite built-in component 指南,对 "data" 或 "prev" 等预定义变量的详细说明以及一些有用的示例。