zoukankan      html  css  js  c++  java
  • jmeter -- 在beanshell中处理http请求数据,对参数进行签名

    完整beanshell代码

    import org.apache.jmeter.config.Arguments;
    import org.apache.jmeter.protocol.http.control.HeaderManager;
    import org.apache.jmeter.protocol.http.control.Header;
    import java.util.*;
    import com.google.gson.Gson;
    import org.apache.commons.codec.digest.DigestUtils;
    import java.security.NoSuchAlgorithmException;
    //生成签名的方法
    String signURLAndRequestParams() throws NoSuchAlgorithmException {
    
    省略。。。
    
    return sign;
    }
    
    params = new ArrayList();
    //获取请求的参数
    Arguments args = sampler.getArguments();
    //获取header中token
    String token = null;
    HeaderManager headerManager = sampler.getHeaderManager();
    headerMap = new HashMap();
    try{
    if(headerManager != null){
    for(int i=0;i<headerManager.size();i++){
    Header header = headerManager.get(i);
    headerMap.put(header.getName(),header.getValue());
    }
    }
    
    }
    catch(Exception e){
    log.info(e.getMessage());
    }
    if(headerMap.containsKey("Authorization")){
    token = headerMap.get("Authorization");
    }
    //参数转换,添加到params
    it = args.iterator();
    while(it.hasNext()){
    argument = it.next();
    String pair = argument.toString();
    if(pair.startsWith("=")){
    params.add("jsonBody"+pair);
    }
    else{
    params.add(pair);
    }
    }
    
    //获取path
    String path = sampler.getPath();
    //从变量获取timestamp、app_id,secret_key
    String timestamp = vars.get("timestamp");
    String app_id = vars.get("app_id");
    String appSecret = vars.get("secretKey");
    //把app_id,timestamp添加到params中
    String timestamp_param = "timestamp="+timestamp;
    String app_id_param = "app_id="+app_id;
    params.add(timestamp_param);
    params.add(app_id_param);
    //获取method
    String method = sampler.getMethod();
    //获取签名
    String sign = signURLAndRequestParams(path,params,appSecret,method,token);
    //把app_id、timestamp、sign加到path
    String path_send = path+"?"+app_id_param+"&"+timestamp_param+"&sign="+sign;
    //reset path
    sampler.setPath(path_send);
  • 相关阅读:
    mysql替代like模糊查询的方法
    8个超实用的jQuery插件应用
    判断登陆设备是否为手机
    SQL tp3.2 批量更新 saveAll
    SQL-批量插入和批量更新
    防止手机端底部导航被搜索框顶起
    php COM
    thinkphp3.2 where 条件查询 复查的查询语句
    Form表单提交,js验证
    jupyter notebook 使用cmd命令窗口打开
  • 原文地址:https://www.cnblogs.com/Eric-zhao/p/9953353.html
Copyright © 2011-2022 走看看