jmeter压测学习36-请求body自动签名带上sign参数
jmeter压测学习36-请求body自动签名带上sign参数_import org.apache.jmeter.config.argument;-CSDN博客
前言
接口请求body带有sign签名参数,sign签名是根据请求body除去sign本身参数后,拼接请求参数最后md5加密生成的。
使用 jmeter 测试接口,我们希望在请求之前修改 post body 里面的 sign 参数的值为签名的值。
sign签名
签名一篇的实现方式是添加 BeanShell 预处理程序,生成sign值,设置一个变量,然后在请求的body里面引用变量。
整体代码实现如下
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.Argument;
import org.json.JSONObject;
import org.json.JSONArray;
import org.apache.commons.codec.digest.DigestUtils; //导入md5加密的包
// 作者-上海悠悠 QQ交流群:717225969
// blog地址 https://www.cnblogs.com/yoyoketang/
Arguments arguments = sampler.getArguments();
Argument arg = arguments.getArgument(0);
// 1.获取请求body值
String body = arg.getValue();
log.info(body);
// 2.body转json对象
JSONObject jsonObject = new JSONObject(body);
String user = jsonObject.getString("username");
String psw = jsonObject.getString("password");
log.info(user);
//3.获取到的json对象去除sign本身参数,拼接参数,排序,拼接key
// 这段暂时还不会用java代码全自动实现
String a = "username" + user;
log.info(a);
String b = "password" + psw;
log.info(b);
String key = "12345678";
log.info(key);
// 4.排序后拼接签名key字符串
c = b+a+key;
log.info(c);
// 5.md5加密,得到sign签名值
String md5_after = DigestUtils.md5Hex(c); // md5加密
log.info(md5_after);
// 6.给jsonObject对象添加sign参数
jsonObject.put("sign", md5_after);
// 7.JSONObject 转字符串
String postData = jsonObject.toString();
log.info(postData);
// 8.重新赋值请求的body参数
arg.setValue(postData);
查看结果树
查看结果树运行结果请求body会带上sign值