背景介绍:
在同一个线程组中,有个接口需要添加 Content-Type=application/json,有的不需要,如何在同一个线程组中,同时维护两个接口
1、在 http 信息头管理器中,添加 Content-Type=application/json
2、例如:“1-结构数据查询”接口不需要公共信息头里的请求头信息,所以添加 BeanShell PreProcessor 前置处理器,删除公共请求头里的信息。
脚本代码:
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());
此时公共请求头里的指定信息被删除了,之后的接口要用到这个信息,所以在后续的接口上再添加回来,
3、例如“3-创建索”接口会用到公共的信息头,在此接口上添加 BeanShell PreProcessor 前置处理器,添加请求头信息到公共请求头里。脚本代码:
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”);
// 添加Header到请求头管理器
headers.add(myHeader);
// 打印全部请求头信息
log.info(“添加后” + headers.getHeaders().getStringValue());
请求头信息添加成功后,后续的接口若要用到这个信息,则无需再添加(BeanShell PreProcessor前置处理器),就可以使用了。
公共的HTTP信息头管理器,请求头值不变。
4、脚本结构:
执行脚本:全部接口执行成功。
“1-创建索引”接口请求头信息,包含 Content-Type=application/json。
“2-结构数据查询”接口请求头信息,不包含 Content-Type=application/json。
“3-创建索引”接口请求头信息,包含 Content-Type=application/json。
查看执行时打印的日志,打印出删除与添加请求头信息。