Jmeter 使用Beanshell PreProcessor在请求前处理sampler请求参数
1. 话不多说先上代码
//引入Argument相关的包
import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
//从sampler中获取参数
Arguments args = sampler.getArguments();
//将参数转化为Map方便使用,需要注意的是Jmeter中的Map不能有类型,否则会报错
Map argsMap = args.getArgumentsAsMap();
//从Map中获取想取得值
String xxx = argsMap.get("xxx");
//省略对值进行加密处理的代码
//增加参数
args.addArgument("sign",sign);
args.addArgument("tm",tm);
args.addArgument("nonceStr",newNonceStr);
2. 官方Javadoc文档
先把链接放在这里:
https://jmeter.apache.org/api/org/apache/jmeter/config/Arguments.html
Beanshell的中文资料出奇的少,特别是详细介绍具体Jmeter函数和对象的。而且,随着版本迭代,大家写的博客等等也会逐渐不可用。中文资料入门尚可,但是看官方文档才是进步的最佳途径。
简单翻译了几个常用的函数标记在了图中:
3. 采坑
调试Map的时候,习惯性的在Beanshell里面将Map定义为如下这种格式:
Map<String,Object> map
但是Jmeter有一个坑是不要在Beanshell里面定义Map的类型,否则会报错。
直接声明一个Map即可:
Map map