最近,有需求涉及到请求头信息能自动读取添加,有多少个,就添加多少个。然后再网上百度了下没找到。自己查jmeterapi
(https://jmeter.apache.org/api/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.html#ARGUMENTS)
文档找到方法。具体方法如下:
ps该方法必须jmeter添加了HeaderManager 管理器,不然会报错
import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.testelement.property.CollectionProperty;
import org.apache.jmeter.protocol.http.sampler;
import org.apache.jmeter.protocol.http.control.Header;
import org.json.JSONObject;
//sampler 里面有个getHeaderManager 可以获得请求头
HeaderManager hm =sampler.getHeaderManager();
//打印出header信息
CollectionProperty cp=hm.getHeaders();
//System.out.println(cp);
for(int i=0;i<cp.size();i++){
System.out.println("----------before-----------");
System.out.println(cp.get(i));
}
//
//将header 转为jsonobject
String header = "{\"hearder1\":\"1\",\"hearder2\":\"2\",\"hearder3\":\"3\"}";
JSONObject header_obj= new JSONObject(header);
Iterator it = header_obj.keys();
while(it.hasNext()){
// 获得key
String key = it.next();
String value = header_obj.getString(key);
// System.out.println("key: "+key+",value:"+value);
Header hd = new Header();
hd.setName(key);
hd.setValue(value);
//加入sample 中
hm.add(hd);
}
//打印出对应值
System.out.println("----------after-----------");
for(int i=0;i<cp.size();i++){
System.out.println(cp.get(i));
}
附上脚本文件test.jmx。脚本里面调用了json.jar包。放在jmeter根目录lib目录下,重启jmeter 运行test.jmx 就可以了。
运行结果会打印在jmeter控制台上,可以看到没添加之前是
有一个header
执行完beanshell预处理器,查看请求hearder
header 请求时,加上了。
链接:https://pan.baidu.com/s/1bHJcJkNeeVpH-FkuZ3dttw
提取码:jsxe