jMeter解析gzipped响应xml

时间:2015-02-02 08:55:41

标签: jmeter

作为我的jMeter场景的一部分,我从服务器获取了gzip xml。 我已经尝试添加标头Accept-encoding:gzip,deflate,sdch但它似乎没有效果。

如何对其进行收缩以便在其上使用XPath提取器?

由于

1 个答案:

答案 0 :(得分:0)

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

来完成

Beanshell PostProcessor执行时间未包含在父采样器响应时间内。它在采样器之后执行,在您的情况下可以用于解压缩响应并用解压缩的XML替换父采样器的响应体。

Beanshell PostProcessor的示例代码:

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 - 是包含父采样器响应正文的字节数组的简写
  • prev - 代表SampleResult实例访问,SampleResult提供对采样器执行期间记录的信息的读/写访问。

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