JMeter请求头添加删除方法(解决请求头类型冲突)
1. 为什么会有冲突
请求头的Content-Type类型在做上传和请求图片地址是,请求头类型是不一样的
请求图片地址:Content-Type: image/jpeg
一般的Restful接口:Content-Type: application/json;charset=UTF-8
请求头我们添加了请求头管理器后,后面所有的接口都会用定义的这个参数,当需要进行图片地址请求时 ,默认也使用这个请求头,会导致请求图片地址报错,这个时候需要把默认的请求头数据清除或修改对应的请求头参数
请求图片地址报错
2. 对图片接口请求头的修改
全局请求头
添加BeanShell 预处理程序,使用代码删除全局的请求头信息
import org.apache.jmeter.protocol.http.control.HeaderManager;
// 获得请求头信息
HeaderManager headers = sampler.getHeaderManager();
// 打印全部请求头信息
log.info("删除前" + headers.getHeaders().getStringValue());
// 删除请求头指定的信息
sampler.getHeaderManager().removeHeaderNamed("Content-Type");
sampler.getHeaderManager().removeHeaderNamed("Authorization");
// 打印全部请求头信息
log.info("删除后" + headers.getHeaders().getStringValue());
删除之后,图片地址请求就可以正常请求了,但此时会发现,后面Restful接口,不能正常访问了,提示没有token了,这个是因为在图片请求时添加的BeanShell 预处理程序删除请求头信息
3. 图片接口请求完成后,添加全局请求头
在下个接口上添加【BeanShell 预处理程序】,注意是【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("Content-Type", "application/json");
token = new Header("Authorization", "${token}");
// 添加Header到请求头管理器
headers.add(myHeader);
headers.add(token);
// 打印全部请求头信息
log.info("添加后" + headers.getHeaders().getStringValue());
这个添加完成后,全局的请求头恢复正常,后面接口正常请求访问。