jmeter 使用beanshell 调用 java 代码解决请求签名相关问题

用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)添加结果视图查看


3.执行并且查询结果




这样就可以了! 

这个例子就是 jemeter引用jar包的一个参考!具体需要还得看具体的需求!嘿嘿生气



  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值