文章插图
3.2、需求二:发起请求前生成签名上面说到http请求的后端处理类是HTTPSamplerProxy , 我们查看HTTPSamplerProxy的代码 , 发现他其实就只实现了几个方法 。其中sample方法返回一个HTTPSampleResult对象 , result大家都知道是结果的意思,所以大概率这个方法就是发起请求并得到结果(其实也可以debug知道,或者百度) 。我们只需要继承其父类HTTPSamplerBase,同样实现这些方法,并在sample方法里生成签名,添加到请求头里,再同样发起请求,即可实现这个需求 。
原生:
文章插图
预期:
文章插图
4、代码实现新建一个maven项目,pom引入jmeter_core与jmeter_http
文章插图
按照需要继承的类的路径 , 在项目中新建目录 。剩下的步骤就是按以上分析的 , 新建并继承对应的类,按需修改父类方法,并建立关联 。
这里特别说明一下增加输入框的代码实现:首先继承UrlConfigGui,然后参考UrlConfigGui的实现,增加key、access两个字段(需要注意的是,重写方法需要先使用父类的方法,再加上自定义的逻辑)
文章插图
至于如何获取自定义输入框的值、如何获取和设置系统变量、如何设置变量到请求头等问题,可以私信问我拿源码
文章插图
5、运行调试编写好代码后,使用maven打包,并把jar包放到jmeter根目录/lib/ext下 。IDEA添加启动配置,新增JAR Application,选择jmeter根目录/bin/ApacheJMeter.jar 。保存后 , DEBUG启动即可进行调试 。
文章插图
6、正式使用如果只是需要在本地使用 , 就可以像调试时一样 , 直接把jar包放到jmeter根目录/lib/ext下 。
因我们公司使用Metersphere,所以需要修改MS打包jmeter镜像的代码,添加自己的jar包,再重新打镜像(需要注意的是,maven项目打包时默认不打依赖,而MS的jmeter镜像缺少生成签名需要的加密算法包,所以我在pom里添加了maven-shade-plugin)
【JMeter自定义HTTP组件】
推荐阅读
- 【ASP.NET Core】MVC控制器的各种自定义:应用程序约定的接口与模型
- 安装 TypeScript 并编译成JS
- fltp备份文件后统计验证
- 记一次HTTPClient模拟登录获取Cookie的开发历程
- day14-HTTP01
- ABAP 调用HTTP上传附件
- Jmeter之聚合报告“造假”
- Jmeter——请求响应内容乱码解决办法
- 真正“搞”懂HTTP协议03之时间穿梭
- FHE学习笔记 #2 多项式环