http://blog.hissummer.com/2017/01/jmeter-jsr223-beanshell%E5%A4%84%E7%90%86%E5%8A%A8%E6%80%81%E7%94%9F%E6%88%90%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0%E7%AD%BE%E5%90%8D%EF%BC%88%E4%BE%8B%E5%A6%82%E5%BE%AE%E4%BF%A1%E5%BC%80%E6%94%BEapi/import
java.util.TreeMap;
import java.util.Set;
import java.util.Iterator;
import java.util.Map;
import java.util.Arrays;
import java.security.MessageDigest;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.nio.charset.Charset;
import com.wjika.test.mymd5;
import java.lang.String;
//long requestTime = System.currentTimeMillis();
String c_time="${__time(,)}";
System.out.println(c_time);
vars.put("current_time",c_time);
String requestTime = c_time;
// 原始请求参数定义
//key1=value1&key2=&key3=value3 key2 为空将不会被作为签名的字符串并被舍弃请求。 具体请参见接口文档。
// 此处会自动添加sign 参数,sign可以不填或者留空即可。
String riginalparametersString = "app_version=5.0.1&bundleid=com.jy.gr&channel=799¤t_time="+requestTime+"&imei=A10000563"+"&sign=&version=1.0&"+"mobile="+"${mobile}";
String[] parameters = originalparametersString.split("&");
log.info(originalparametersString);
log.info(String.valueOf(parameters.length));
TreeMap SortedParametersWithoutSign = new TreeMap();
// 将参数按字母排序
for(int i = 0 ; i < parameters.length ; i ++){
String[] pandvalue = parameters[i].split("=");
log.info(String.valueOf(pandvalue.length));
if(pandvalue.length>1){
String[] values = Arrays.copyOfRange(pandvalue, 1, pandvalue.length);
log.info(String.valueOf(values.length));
log.info(values[0]);
if(!values[0].equals(""))
SortedParametersWithoutSign.put(pandvalue[0],values[0]);
}
else{
//SortedParametersWithoutSign.put(pandvalue[0],null);
}
}
// 根据排序后的参数,组装参数。
String requestParameters = "";
Set set = SortedParametersWithoutSign.entrySet();
Iterator iterator = set.iterator();
int iterationcount = 0;
while(iterator.hasNext()) {
Map.Entry mentry = (Map.Entry)iterator.next();
log.info("key: "+mentry.getKey()+" ---- must:"+ mentry.getValue() );
// if( mentry.getValue()[0].equals("Y") && !mentry.getKey().equals("sign") ){
if(iterationcount == 0)
requestParameters += mentry.getValue();
else requestParameters += mentry.getValue();
iterationcount++;
// }
}
log.info(requestParameters);
vars.put("requestParameters",requestParameters);
String a=vars.get("requestParameters");
StringBuilder stringBuilder = new StringBuilder(a);
String signKey="jygdfgdfgdfgfdgddfgfdgo";
String signRandom="bsdfsd34234234fsdfsdf82d";
String sign = mymd5.getMd5(stringBuilder.append(signKey).toString()).concat(signRandom);
System.out.println(sign);
vars.put("sign", sign);