首页 > 其他分享 >jmeter获取请求body进行加密增加header属性

jmeter获取请求body进行加密增加header属性

时间:2023-03-15 16:35:32浏览次数:51  
标签:body info log header signature import jmeter

1、由于对接口请求进行加密,填写的body的json格式不要待格式,格式里面会有空格啥的,接口请求中headers中的新增的属性是把body转为jsonStr进行MD5加密

 

 

 

 

2、在beanshell的前置处理器中,每次都新增了x-header-signature属性,如果是多线程执行,这样会道痴,接口请求中有多个x-header-signature值,增加如下代码删除headers属性中

// 先删除 x-header-signature,不然对于多线程,每次new一个header("x-header-signature"),会有多个值产生
sampler.getHeaderManager().removeHeaderNamed("x-header-signature");

 

 

 

 

 

import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
import com.alibaba.fastjson.*;
import com.alibaba.fastjson.JSONObject;

/*-----------取http请求中的body值---------------*/

//创建一个map存储数据
String body=null;

//获取参数
Arguments args = sampler.getArguments();

//开始遍历
it = args.iterator();

while(it.hasNext()){

argument = it.next();


String pair = argument.toString();
//log.info("----1"+pair);

if(pair.startsWith("=")){
body = pair.substring(1);
}
}

// log.info("====获取到body====");

JSONObject json=JSON.parse(body);

// log.info("解析成功===="+ json);

// log.info("---------_data-----------:"+json.toString());

//vars.put("m_data",json.toString());

vars.put("m_data",JSON.toJSONString(json));

//log.info("解析成功==的string=="+ vars.get("m_data"));

 

//对字符串进行加密
import org.apache.commons.codec.digest.DigestUtils;

String password = vars.get("m_data");
//String password = vars.get("password");
String pwd=DigestUtils.md5Hex(password).toUpperCase( );//将密码加密且转换为大写
vars.put("pwd",pwd);
log.info("md5加密之后的string=="+ vars.get("pwd"));


import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.Header;

// 先删除 x-header-signature,不然对于多线程,每次new一个header("x-header-signature"),会有多个值产生
sampler.getHeaderManager().removeHeaderNamed("x-header-signature");


// 获得请求头信息
HeaderManager headers = sampler.getHeaderManager();
// 打印全部请求头信息
log.info("添加前" + headers.getHeaders().getStringValue());
// new一个Header对象
myHeader = new Header("x-header-signature", pwd);
// 添加Header到请求头管理器
headers.add(myHeader);
// 打印全部请求头信息
log.info("添加后" + headers.getHeaders().getStringValue());

标签:body,info,log,header,signature,import,jmeter
From: https://www.cnblogs.com/xiaofeng91/p/17219008.html

相关文章

  • jmeter获取jdbc请求的响应结果
         importjava.util.*;importjava.lang.*;Stringverify=prev.getResponseDataAsString();//获取响应结果Stringtest_verify=verify.substring(5,11......
  • rails header 传参数开发环境正式环境区别
    rails开发环境api传递access_token参数  在controller用 request.headers["HTTP_ACCESS_TOKEN"]可获取到值。但是在生产环境却获取不到值了。原因是生产环境head......
  • jmeter关于常用取样器的设置
      常用创建操作  1、线程组:测试计划(右键)-->线程(用户)-->线程组  2、http请求:线程组(右键)-->取样器-->http请求  3、察看结果树:线程组(右键)-->监听器-->察......
  • 有关jmeter中取样器的所有设置
    1、名称:本属性用于标识一个取样器,建议使用一个有意义的名称2、注释:对于测试没有任何作用,仅用户记录用户可读的注释信息3、协议:向目标服务器发送http请求时的协议,可以是http......
  • jmeter使用-不一样的正则提取
    正则使用:https://blog.csdn.net/darkmanno5/article/details/80428275 1、解决的其他实际问题:安心购榜单是随运营配置不定期变动的,不能写死访问的链接,数据库无法查询,是......
  • jmeter使用-beanshell的简单使用
    1.需求是希望能够将response返回的数据和数据库的数据作比对,二者不一致的时候能够给出错误提示这个时候使用beanshell断言去校验两个变量 需要注意的是断言结果这一块,b......
  • jmeter使用-CSV取值
     jmeter读取excel数据jmeter读取excel数据使用的方法是使用JmeterCSVDataSetConfig参数化但是将excel文件保存成csv格式后,jmeter读取后返回的数据总是出现乱......
  • 【Spring注解】@RequestBody和@RequestParam的区别
    SpringMVC中经常会用到@RequestBody和@RequestParam两个注解来获取请求的参数,那么这两个参数到底有什么区别呢?首先我们要知道GET请求与POST请求的区别GET请求......
  • Jmeter右上角不显示线程数和运行时间
    问题:Jmeter右上角不显示线程数和运行时间问题发生原因在GUI界面去修改的语言这样就会出现这样的bug解决恢复原设置后去Jmeter的bin目录,找到jmeter.properties,把la......
  • jmeter之测试报告
    生成结果文件执行命令:jmeter-gb.txt-oreportjmeter-g结果文件-o报告目录报告解析参考:https://blog.csdn.net/huihuikuaipao_/article/details/125259264......