工具:Jmeter
功能:BeanShell前置预处理程序
补充文件:json.jar
获取步骤
1.获取接口的签名规则
举例:
2.创建Jmeter请求
3.编写BeanShell程序
这里需要导入json.jar
包到lib目录下,
参考链接:1.无json.jar包解决办法 2.代码参考博客
根据签名规则编写的代码如下:
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加密的包
// 参考blog地址 https://www.cnblogs.com/yoyoketang/,作者-上海悠悠 QQ交流群:717225969
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 appid = jsonObject.getString("appId");
String nonce = jsonObject.getString("nonce");
String timestamp = jsonObject.getString("timestamp");
//String psw = jsonObject.getString("password");
log.info(appid);
log.info(nonce);
log.info(timestamp);
//3.获取到的json对象去除sign本身参数,拼接参数,排序,拼接key
// 这段暂时还不会用java代码全自动实现
String key = "123456";
log.info(key);
// 4.排序后拼接签名key字符串
String d = appid+nonce+timestamp+key;
log.info(d);
// 5.md5加密,得到sign签名值
String md5_after = DigestUtils.md5Hex(d); // md5加密
log.info(md5_after);
// 6.给jsonObject对象添加sign参数
jsonObject.put("signature", md5_after);
// 7.JSONObject 转字符串
String postData = jsonObject.toString();
log.info(postData);
// 8.重新赋值请求的body参数
arg.setValue(postData);