标签:管理器 请求 headers 信息 获取 参数 HTTP 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());
标签:管理器,请求,headers,信息,获取,参数,HTTP,JMeter 来源: https://www.cnblogs.com/panpanda/p/16250621.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。