用jemeter处理如下类似的请求! 这个接口是我用php简单写的一个测试接口,其中 sign是 name属性的值 MD5签名,请求是时候需要在请求头跟请求体里带上这个签名。那么问题来了,由于name值是动态变化的,那么sign也就是变化的。因此在jemeter里要如何解决呢?下边就是我的方
1.首先用java写一个MD5签名类,然后用IDEA导出这个jar包(具体怎么导出去找度娘就行了)具体代码如下。
package com.dm;
import java.security.MessageDigest;
/***
* @Author maochuang.li
*
* @Email maochuang.li@fuyinhy.com
*
* @Date Create in 11:01 2017/11/1 0001
*/
public class Md5Utils {
private final static String[] hexDigits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
public static String byteArrayToString(byte[] b) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++) {
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
}
private static String byteToHexString(byte b) {
int n = b;
if (n < 0) {
n = 256 + n;
}
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static String getMd5Str(String origin) {
String resultString = null;
try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
resultString = byteArrayToString(md.digest(resultString.getBytes("utf-8")));
} catch (Exception ex) {
ex.printStackTrace();
}
return resultString;
}
/**
* @param args
*/
public static void main(String[] args) throws Exception {
String sign = getMd5Str("qwe123");
System.out.println(sign);
}
}
导出Jar包如下,并将此jar包复制到 jemeter跟目录 \lib\ext 之后重启jemeter
2.配置jemeter请求脚本
1)创建测试线程组
2)添加http请求(配置好服务器地址 请求资源路径 请求方式 并配置请求参数 设置变量${datas})
3)配置请求协议头(配置头名称 name 为sign 并配置变量 ${sign})
4)添加http服务请求 beanshell脚本
代码实现
import com.dm.*;//导入jar包配置
String reqData="";//配置请求参数字符串
String name="qqq123";//请求参数 name值
String sign=Md5Utils.getMd5Str(name);
System.out.println("计算结果:"+sign);
reqData="name="+name+"&sign="+sign;//拼接请求参数
System.out.println("结果:"+reqData);
vars.put("datas",reqData);//给变量datas设置值
vars.put("sign",sign);//给请求头设置值
5)添加结果视图查看
这样就可以了!
这个例子就是 jemeter引用jar包的一个参考!具体需要还得看具体的需求!嘿嘿