Jmeter(2)Beanshell获取响应头字段

目的

获取响应头的字段值
以下面的取样器响应头为例,演示如何取响应头字段X-AL-HTTP-Response-Header-Time的值 173.744ms
在这里插入图片描述

方法1:正则表达式提取

最简单,直接在请求下面增加一个后置处理器:正则表达式提取器
在这里插入图片描述
利用debug sampler检查提取结果
在这里插入图片描述

方法2:利用beanshell

在请求下面增加一个后置处理器:Beanshell后置处理程序
在beanshell中获取响应头方法:prev.getResponseHeaders(),获取到的是响应头的全部,是一个字符串。
在这里插入图片描述
其中第一行为状态码 HTTP/1.1 200 OK,换行后的数据都是以冒号区分的键值对,我们只存这部分内容。
再通过split()函数通过换行分隔符"\n"将每一个参数和值存放在数组hlist中,这时候数组hlist中应该是[HTTP/1.1 200 OK, Date: Fri, 18 Nov 2022 03:25:24 GMT, Content-Type: text/html; charset=utf-8, Content-Length: 81779, Connection: keep-alive,…]类似如此,在遍历整个hlist数组时,再次使用split函数通过分隔符“:”将参数和值存入哈希表,形成键值对,到时候直接根据键取值即可。

具体实现代码

import java.util.HashMap;
import java.util.Map;

String ResponseHeaders = prev.getResponseHeaders();
log.info(ResponseHeaders);

String[] hlist=ResponseHeaders.split("\n"); //将响应头用split拆分存入数组hlist
log.info(Arrays.toString(hlist));

hlistlen=hlist.length;         //获取数组长度,计算数组长度时用length,而不是length()
log.info(hlistlen.toString());

Map headersMap=new HashMap();   //创建一个HashMap来重新组装headers
log.info("第"+0+"个:"+hlist[0]);

for(i=1;i<hlistlen;i++){                 //遍历数组,从索引1开始
    log.info("第"+i+"个:"+hlist[i]);    //打印单个数组元素
    String[] itemlist=hlist[i].split(":");    //将数组元素按冒号分隔
    headersMap.put(itemlist[0],itemlist[1]);  //将分隔的数组元素作为键、值存储
}

log.info(headersMap.toString());          //打印哈希表

rt=headersMap.get("X-AL-HTTP-Response-Header-Time");  //获取ResponseTime值,
log.info("ResponseTime值为===="+ rt);
String[] rtt=rt.split("  ");   //去掉后面多余字符串
log.info(rtt[0]);

在这里插入图片描述

如果想获取HashMap长度以及遍历整个键、值

log.info("HashMap的元素个数为:"+headersMap.size());  //获取键值对个数
log.info(String.valueOf(headersMap.keySet()));     //获取所有键KeySet(),类型为集合[]
log.info(String.valueOf(headersMap.values()));

for(String key:headersMap.keySet()) {   //遍历,获取所有的键、值
      log.info("key is "+key+", value is "+headersMap.get(key));
  }

在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值