BeanShell PreProcessor获取请求http-Get 参数进行排序后进行签名加密后重新发送:
例子:

代码:
import org.apache.jmeter.protocol.http.sampler;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.Argument;
import java.io.*;
import org.json.*;
Arguments arguments = sampler.getArguments(); // 获取请求
int count = arguments.getArgumentCount();
Map smap = arguments.getArgumentsAsMap();
JSONObject dataObj = new JSONObject();
Set keyset = smap.keySet();
Iterator it = keyset.iterator();
while(it.hasNext()){
String key = it.next();
if(!key.equals("")){#Get 参数加了多行空参数
String value = smap.get(key);
log.info(key+"****"+value);
dataObj.put(key, value);
}
}
List keyArry = new ArrayList(); // 创建list存储body中的key值
Iterator iterator = dataObj.keys(); // 生成迭代对象
// 循环key,将其放入list
while (iterator.hasNext()) {
String key = (String) iterator.next();
// 去除sign
if (!key.equals("sign") && !key.equals("Sign")) {
keyArry.add(key);
}
}
Collections.sort(keyArry); // 对list进行排序
// 循环list中的key,读取对应的Value组成字符串
String re = "";
for (String s : keyArry) {
String str = dataObj.getString(s);
if (!str.equals("")) {
re += str;
}
}
log.info(re);
#处理sign过程省略。。。。 最后添加sign字段
sampler.addArgument("sign", sign.toString());
测试结果
INFO o.a.j.u.BeanShellTestElement: name****tom INFO o.a.j.u.BeanShellTestElement: age****23 INFO o.a.j.u.BeanShellTestElement: sex****1 INFO o.a.j.u.BeanShellTestElement: 23tom1
浙公网安备 33010602011771号