如何从JMeter SampleResult获取CookieManager

时间:2017-09-22 14:35:28

标签: cookies jmeter

我有一个后端监听器,可以将JMeter结果发布到外部服务器。它适用于大多数零件。但是,我想获取失败请求的cookie信息。后端监听器只获取SampleResult,我没有看到从SampleResult访问cookie信息的API。有没有人有想法?

查看结果树监听器能够打印出请求cookie,因此必须有办法。但是,该特定侦听器的类名是什么并不明显。如果有人能指出我的源代码,那将是一个起点。

2 个答案:

答案 0 :(得分:1)

在没有看到某些代码的情况下很难提供帮助,但一个方向可能就是这样:您可以检查SampleResultHTTPSampleResult类型,如果是,请使用{{1}获取其Cookie }} 方法。整个过程可以包装为以下功能:

getCookies()

这样的事情在JMeter的RequestViewHTTP.java

中完成

在后端侦听器中获取CookieManager可能会有问题,因为它是可变的:当后端侦听器从CookieManager读取时,Cookie列表可能与请求执行时不同。

答案 1 :(得分:1)

使用当前的JMeter实现,除非您创建自己的AbstractBackendListenerClient实现,否则将无法识别cookie。

另外,根据您如何解析结果,您可以替换"不感兴趣" SampleResult字段(例如Response Message),其中包含失败请求的Cookie值。可以使用ie JSR223 PostProcessor和以下Groovy代码

来完成
if (!prev.isSuccessful()) {
    def manager = sampler.getCookieManager()
    def cookies = new StringBuilder()
    for (int i = 0; i < manager.getCookieCount(); i++) { 
        cookies.append(manager.get(i).getName()).append('=').append(manager.get(i).getValue())
    }
    prev.setResponseMessage(cookies.toString())
}