一 首先我们要搞清楚接口签名步骤:
**第一步:初步实现接口**
**第二步:找开发拿到算法和key**
* key:sAHDRNJg0ZevmEn7HwBfbw==
* 算法:HmacMD5 咱们就找一个https://www.wenjiangs.com/doc/85uwistv
* 在JMeter当中,需要引入第三方的包才能支持HmacMD5
**第三步:问开发生成sign的逻辑**
* 对请求数据排序和去重
Map sortMap = new TreeMap(); // 使用TreeMap排序 sortMap.putAll(map); // TreeMap默认升序排序* 拼接成字符串
StringBuilder sb = new StringBuilder(); for (Map.Entry entry : sortMap.entrySet()){ sb.append("&").append(entry.getKey()).append("=").append(entry.getValue()); }* 加密
* 以sign形式放入请求数据(请求体/请求头/URL)
* 其他知识 字符串json转json对象 Map map = JSON.parseObject(body);切割字符串 "sss".substring(1)
二核心代码:
``` import cn.hutool.crypto.digest.HMac; import com.alibaba.fastjson.JSON; import java.util.Map; import org.apache.jmeter.config.Arguments; // 获取响应数据 Arguments args = sampler.getArguments(); String body = args.getArgument(0).getValue(); log.info("==========body==========:" + body); // 把响应数据解析成JSON对象 Map map = JSON.parseObject(body); // 排序 Map sortMap = new TreeMap(); // 使用TrueeMap排序 sortMap.putAll(map); // TreeMap默认升序排序 // 拼接字符串 StringBuilder sb = new StringBuilder(); for (Map.Entry entry : sortMap.entrySet()){ sb.append("&").append(entry.getKey()).append("=").append(entry.getValue()); } log.info("============sb====: "+ sb.substring(1)); // sign签名 byte[] key = "sAHDRNJg0ZevmEn7HwBfbw==".getBytes(); HMac mac = new HMac("HmacMD5", key); String sign = mac.digestHex(sb.substring(1)); log.info("-------------------sign-------: " + sign); // 把sign保存到JMeter变量 vars.put("sign", sign) ```三 实践效果:
标签:Map,加密,sign,sortMap,BeanShell,entry,sb,加签,append From: https://www.cnblogs.com/yongheng999/p/18056863