jmeter md5 beanshell处理动态生成请求参数签名

上一篇 / 下一篇  2018-01-02 16:34:57 / 个人分类:JMeter

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&current_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);


 

TAG:

 

评分:0

我来说两句

Open Toolbar