jmeter中请求加密,响应结果解密,并将解密结果展示在结果树中

1.问题背景:jmeter中发送http请求需要对数据做加密处理,返回的结果也是加密,需要对返回结果进行解密操作,并将解密后的结果显示在结果树中.
2.思路:在http请求中添加前置处理(加密),并且添加后置处理器(对结果解密).
3.踩过的坑:jmeter中不支持map指定数据类型,比如Map(String,String) map=new HashMap(String,String)<>;可以直接使用Map map=new HashMap();
或者直接可以使用JSONObject map = new JSONObject();只需要引入fastJson即可,存储方便赞.....
4.具体操作步骤
(1).将fastjson和加解密jar包放到JMeter的lib目录的ext目录下,即jmeter的classpath目录,不会因为变更线程组导入的包失效;
(2).添加一个http请求.并在http上右击添加一个前置处理器

(3).在前置处理器中添加加密代码,并将结果保存做为http请求的参数;

import 引用加解密包.*;
import com.alibaba.fastjson.JSONObject;

JSONObject map = new JSONObject();//参数使用JSONObject存储
map.put("idType", "02");
map.put("orderNo", ${__Random(1,1000,)});

//调用加密方法,将参数传入,得到加密数据,注意私钥引用需要加引号""
String data = RSAUtil.enStr(map.toJSONString(), "${privateKey}");

//存储为data,在http中就可以通过${data}直接引用了
vars.put("data", URLEncoder.encode(data, "utf-8"));

(4).在http请求中引用加密数据,作为请求参数传递.

(5).给http请求添加后置处理器,处理响应的加密结果.

如何不做处理,结果树显示的结果是这样的

 

import 引入加解密包.*;
//prev.getResponseDataAsString()这个方法为获取响应的所有结果.刚开始我以为prev为前置处理器的名称,后来发现是内置对象,就需要用prev取
String enResult=RSAUtil.deStr(prev.getResponseDataAsString(),"${privateKey}");

//prev.setResponseData()这个方法是为结果树显示的结果重新赋值的方法
prev.setResponseData(enResult);
vars.put("enResult",RSAUtil.deStr(prev.getResponseDataAsString(),"${privateKey}"));

只要prev.getResponseDataAsString()和 prev.setResponseData()方法找到,就可以轻松搞定了.

//SampleResult需要import对象
import org.apache.jmeter.samplers.SampleResult;

SampleResult result = ctx.getPreviousResult();
//getRequestHeaders()方法返回String字符串
String RequestHeaders = result.getRequestHeaders();
//getResponseHeaders() 返回响应headers
String ResponseHeaders = result.getResponseHeaders() 
//getResponseCode() 返回响应状态码字符串
String responseCode = result.getResponseCode();
//getURL() 返回请求URL对象 
URL url = result.getURL();
log.info(RequestHeaders);
log.info(RequestHeaders);

prev是Beanshell后置处理器的内置对象 相当于ctx.getPreviousResult();

 

最后的结果为

 ps:调试的时候可以添加BeanShell Sampler和Debug Sampler,只要代码正确,结果都可以正常显示,也可以看到你存储和取的值是否正常显示.非常好用.

 

 

 

 

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值