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);

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

相关推荐
strongwyy30 分钟前
9、nRF52xx蓝牙学习(pca10056.h学习)
单片机·嵌入式硬件·学习
每天题库32 分钟前
2025 年江苏保安员职业资格考试经验分享
学习·安全·考试·题库·考证
viperrrrrrrrrr76 小时前
大数据学习(105)-Hbase
大数据·学习·hbase
行思理8 小时前
go语言应该如何学习
开发语言·学习·golang
oceanweave9 小时前
【k8s学习之CSI】理解 LVM 存储概念和相关操作
学习·容器·kubernetes
wgslucky10 小时前
Jmeter分布式测试启动
分布式·jmeter
吴梓穆11 小时前
UE5学习笔记 FPS游戏制作43 UI材质
笔记·学习·ue5
学会870上岸华师11 小时前
c语言学习16——内存函数
c语言·开发语言·学习
XYN6111 小时前
【嵌入式面试】
笔记·python·单片机·嵌入式硬件·学习
啊哈哈哈哈哈啊哈哈11 小时前
R3打卡——tensorflow实现RNN心脏病预测
人工智能·深度学习·学习