接口-签名Sign-Jmeter写法
接口-签名Sign-Python写法
https://www.cnblogs.com/zibinchen/p/13519774.html
实现目标
/v1/shippingtickets/inbound/departure 发货接口 POST请求
需要进行签名校验 【X-Sign】
Content-Type: application/json; charset=UTF-8
X-Timestamp: 1589297138920
X-Nonce: 93295642
X-Sign: 2a76a7d2ec34760afb7f4f3ff5a02ef3
X-Client-Id: KT071101
传参:
{"ticketNo":"HCSP202005120006","trackingNumber":"SF1589297133080","chargerSerialNum":"SF1589297133080","shippingComment":"感谢技术支持,总算发货成功了"}
sign是由【传参+时间戳+随机数+"cM5qa0Xv9G868G"】转成MD5码
实例
用自定义变量,把参数变成2部分
aa: {"ticketNo":"
bb: ","trackingNumber":"SF${__time(,)}","chargerSerialNum":"SF${__time(,)}","shippingComment":"感谢技术支持,总算发货成功了"}
用Beanshell Sameple,使用java代码生成sign
beanshe内置变量:https://www.cnblogs.com/zibinchen/p/14128412.html
import static java.lang.Math.*;
import org.apache.commons.codec.digest.DigestUtils;
Long a = System.currentTimeMillis(); // 当前时间戳
String Timestamp = String.valueOf(a);
log.info("debug info {}",a);
final double d = Math.random();
final int b = (int)(d*100000000);
String Nonce = String.valueOf(b);
log.info("debug info2 {}",b);
String c = vars.get("aa")+vars.get("ticketNo")+vars.get("bb")+a+b+"E92EU399R3R3R3";
log.info("debug info3 {}",c);
//String str = c; //要加密的字符串
String md5_after = DigestUtils.md5Hex(c); // md5加密
log.info("debug info4 {}",md5_after);
vars.put("Timestamp",Timestamp);
vars.put("Nonce",Nonce);
vars.put("Sign",md5_after);
添加HTTP信息头管理器