当前位置: 首页 > news >正文

jmeter-beanshell学习3-beanshell获取请求报文和响应报文

前后两个报文,后面报文要用前面报文的响应结果,这个简单,正则表达式或者json提取器,都能实现。但是如果后面报文要用前面请求报文的内容,感觉有点难。最早时候把随机数写在自定义变量,前后两个接口都用这个变量,但是如果加上循环次数,每次随机数都会一样。又要用到beanshell了。

随便找的一个废弃的接口,要取a的值,用beanshell前置处理器

import org.apache.jmeter.config.Arguments;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
//获取请求体
Arguments args= sampler.getArguments();
String requestBody = args.getArgument(0).getValue();
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode=mapper.readTree(requestBody);

a=rootNode.get("body").get("a").asText();
log.info("取到的a值:"+a);
vars.put("a",a);
 

执行看一下日志

最后再vars.put定义变量,后面的接口就可以用了。

beanshell能取请求报文,也能取响应报文,如果查询接口,返回内容很多,用beanshell还是有点方便的。还拿个接口,取响应报文code。

找了几个别人的写法,要用json包,然后看jmeter自带的好像没有,需要再单独下载,就想到一个问题,这个脚本在我本地能执行,如果传给别人就不能跑了。后来试着拿获取请求报文的代码改改,还真成功了。这次要用后置处理器

import org.apache.jmeter.config.Arguments;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
//获取响应报文
String response=prev.getResponseDataAsString();
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode=mapper.readTree(response);

code=rootNode.get("code").asText();
log.info("取到的code值:"+code);
vars.put("code",code);
 

今天这篇基本都是直接找的别人代码,具体意思也不太清楚,只知道实现了想要的内容,可能哪里有瑕疵

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • dify/api/models/workflow.py文件中的数据表
  • 防火墙安全策略练习
  • uiautomation: debug记录
  • 【Pytorch】Conda环境pack打包迁移报错处理
  • 【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十二)-管道、环境变量、常用命令
  • 科研绘图系列:R语言径向柱状图(Radial Bar Chart)
  • 集成sa-token前后端分离部署配置corsFliter解决跨域失效的真正原因
  • uboot学习:(三)目录分析
  • vue对axios进行请求响应封装
  • 多输入多输出 | Matlab实现Transformer多输入多输出预测
  • 全网最适合入门的面向对象编程教程:14 类和对象的 Python 实现-类的静态方法和类方法,你分得清吗?
  • 视频调整帧率、分辨率+音画同步
  • 丑数问题,力扣264,坑点
  • markdown文件转pdf
  • 了解AsyncRotationController
  • 时间复杂度分析经典问题——最大子序列和
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • canvas绘制圆角头像
  • HTTP--网络协议分层,http历史(二)
  • Java 最常见的 200+ 面试题:面试必备
  • Java读取Properties文件的六种方法
  • JS专题之继承
  • React-redux的原理以及使用
  • SpiderData 2019年2月25日 DApp数据排行榜
  • SpriteKit 技巧之添加背景图片
  • SQLServer之索引简介
  • vue--为什么data属性必须是一个函数
  • Vultr 教程目录
  • 闭包,sync使用细节
  • 从零开始学习部署
  • 关于使用markdown的方法(引自CSDN教程)
  • 精彩代码 vue.js
  • 聊聊flink的BlobWriter
  • 我这样减少了26.5M Java内存!
  • 第二十章:异步和文件I/O.(二十三)
  • 函数计算新功能-----支持C#函数
  • ​Spring Boot 分片上传文件
  • ​zookeeper集群配置与启动
  • #13 yum、编译安装与sed命令的使用
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (07)Hive——窗口函数详解
  • (4)事件处理——(7)简单事件(Simple events)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二十四)Flask之flask-session组件
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (六)Hibernate的二级缓存
  • (六)vue-router+UI组件库
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (区间dp) (经典例题) 石子合并
  • (算法)硬币问题