【JMeter】beanshell 获取/修改请求头信息

8 篇文章 4 订阅 ¥99.90 ¥99.00
8 篇文章 4 订阅 ¥99.90 ¥99.00

在使用jmeter做接口测试的时候,相信大家一定遇到过以下场景:使用HTTP信息头管理器设置全局请求头信息,如:content-type = application/json,但并非所有的接口的content-type都是application/json,那么该怎么更改已有请求头信息呢?如果请求头参数不适用于某个请求,需要删除,又该怎么处理呢?

场景一:可以直接在该请求下添加HTTP信息头管理器,设置所需要的请求头参数,如 content-type = text/plain ,发送请求时使用的就是该请求自己下面的HTTP信息头管理器设置的请求头参数

在这里插入图片描述
在这里插入图片描述

场景二:此时需要使用beanshell预处理程序要删除不需要的请求头参数(jmeter提供了HeaderManager对象,可以操作请求头信息)

import org.apache.jmeter.protocol.http.control.HeaderManager;
// 获得请求头信息
HeaderManager headers = sampler.getHeaderManager();
// 打印删除指定请求头参数前的全部请求头信息
log.info("删除前" + headers.getHeaders().getStringValue());
// 删除请求头指定的信息
sampler.getHeaderManager().removeHeaderNamed("Content-Type");
// 打印删除指定请求头参数后的全部请求头信息
log.info("删除后" + headers.getHeaders().getStringValue());

在这里插入图片描述

场景三:在一系列的请求中,可能前面的请求都不需要全局HTTP信息头管理器中设置的某个请求头参数,但是后续的请求是需要的,此时,可能会这样做:使用beanshell前置处理程序将不需要的请求头参数删除,然后在需要该参数的请求下添加HTTP信息头管理器,在其中设置该参数即可。但这样是有问题的:在执行时,是先执行HTTP信息头管理器,然后在执行beanshell前置处理程序的,所以执行删除请求头参数时会将单独给所需要参数的请求设置的参数一并删除,导致在需要该参数的请求下添加HTTP信息头管理器设置的参数不生效,如下图。

在这里插入图片描述
在这里插入图片描述
所以,解决方法只能是再在该请求下添加beanshell预处理程序,给其设置所需要的请求头参数。

import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.Header;

// 获得请求头信息
HeaderManager headers = sampler.getHeaderManager();
// 打印全部请求头信息
log.info("添加前" + headers.getHeaders().getStringValue());
// new一个Header对象
myHeader = new Header("x-parse-session-token", "${sessionToken}");
// 添加Header到请求头管理器
headers.add(myHeader);
// 打印全部请求头信息
log.info("添加后" + headers.getHeaders().getStringValue());

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值