微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

在使用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());

原文地址:https://www.cnblogs.com/panpanda/p/16250621.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐