作为我的jMeter场景的一部分,我从服务器获取了gzip xml。 我已经尝试添加标头Accept-encoding:gzip,deflate,sdch但它似乎没有效果。
如何对其进行收缩以便在其上使用XPath提取器?
由于
答案 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”等预定义变量的详细说明以及一些有用的示例。