目录:导读
一、前言
接口请求body带有sign签名参数,sign签名是根据请求body除去sign本身参数后,拼接请求参数最后md5加密生成的
使用 jmeter 测试接口,我们希望在请求之前修改 post body 里面的 sign 参数的值为签名的值
二、sign签名
签名一篇的实现方式是添加 BeanShell 预处理程序,生成sign值,设置一个变量,然后在请求的body里面引用变量
可以参考前面这篇:https://blog.csdn.net/x2waiwai/article/details/122843324
接下来再讲另外一种实现方式,在BeanShell 预处理程序先获取请求的body,签名后给sign参数重新赋值,然后发送新的请求body
整体实现思路如下
1.先获取请求body值
2.body转JSONObject对象
3.根据sign签名规则,对JSONObject对象遍历取值,然后排序
4.排序后拼接签名key,生成一个新的字符串
5.md5加密,得到sign签名值
6.给jsonObject对象添加sign属性
7.JSONObject 转json字符串
8.给请求的body重新赋值
在发送请求之前添加上面功能的预处理,就可以实现body参数自动签名了
三、BeanShell 预处理程序
HTTP请求样本在body里面可以不用加签名sign参数
添加 BeanShell 预处理程序
整体代码实现如下
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.Argument;
import org.json.JSONObject;
import org.json.JSONArray;