Jmeter 请求签名api接口-BeanShell

Jmeter 请求签名api接口-BeanShell

  • 项目签名说明
  • 编译扩展jar包
  • jmeter 使用 BeanShell 调用jar包中的签名方法

项目签名说明

有签名算法的api接口本地不好测试,使用BeanShell 扩展jar 包对参数进行签名,接口签名算法使用 sha512Hex 算法。签名的说明如下

  1. 请求参数类型
    body 参数
    原始字符串 originData
appId=appId&appKey=appKey&timeStamp=当前时间戳&body=json参数
  1. request 参数
    原始字符串 originData
appId=appId&appKey=appKey&timeStamp=当前时间戳&key1=value1&key2=value2

key 按照升序排列

  1. 签名算法
    使用 sha512Hex 签名算法
String inputData = "name=scd&address=广东";
String encodeData = URLEncoder.encode(inputData, StandardCharsets.UTF_8.name());
String result = DigestUtil.sha512Hex(encodeData, StandardCharsets.UTF_8.name());
System.out.println(result);

originData 使用 URLEncoder.encode 编码,避免出现中文。在使用 sha512Hex 算法计算出签名串 sign

  1. 请求头数据
sign:sign
timestamp:1701948943849
appId:xxx

项目地址
https://gitee.com/3281328128/web-jdk17/tree/dev/

启动项目后 swagger 访问地址
http://localhost:8080/boot3/swagger-ui/index.html
在这里插入图片描述

编译扩展jar包

jmeter 支持扩展的jar包,使用BeanShell调用jar包中的方法。项目地址为https://gitee.com/3281328128/jmeter-api-sign。目前jmeter5.6.2版本支持jdk8编译的扩展jar,之前用jdk17编译出来的扩展jar包,不能运行签名算法,后面改成使用jdk8编译的jar包

引用的jar包需要带jar-with-dependencies 结束的jar,如图所示
在这里插入图片描述
如果使用 maven 编译,将依赖编译到jar包里面配置如下所示

<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><mainClass>com.itsenlin.Helloworld</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id> <!-- this is used for inheritance merges --><phase>package</phase> <!-- bind to the packaging phase --><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build>

jmeter 使用 BeanShell 调用jar包中的签名方法

  1. 选择测试计划导航栏,配置扩展的jar
    在这里插入图片描述
  2. 配置BeanShell 预处理程序
    路径 添加 -》前置处理器 -》BeanShellProcessor
    在这里插入图片描述
    BeanShell 的具体配置如下所示
    在这里插入图片描述
    使用扩展jar包中的签名算法
import com.alibaba.fastjson.JSON;
import com.scd.sign.SignUtil;String inputParam = "{\n" +"  \"id\": 0,\n" +"  \"userName\": \"string\",\n" +"  \"password\": \"string\"\n" +"}";
String inputJson = JSON.parseObject(inputParam).toJSONString();
log.info("request json " + inputJson);
String timeStamp = String.valueOf(System.currentTimeMillis());
String appId = bsh.args[0];
String appKey = bsh.args[1];
String sign = SignUtil.generateBodySign(appId, appKey, timeStamp, inputJson);
vars.put("body", inputJson);
vars.put("appId", appId);
vars.put("timestamp", timeStamp);
vars.put("sign", sign);

vars 中存入了原始的请求参数,http的请求的body参数需要取vars中存入的数据 ${body}
在这里插入图片描述
请求头中需要的数据 appId、timestamp、sign 也可以从 vars 中获取
在这里插入图片描述
BeanShell 的用法可以查看 【jmeter】BeanShell用法详细汇总

  1. 配置接口响应断言
    路径 添加 -》断音 -》JSON断言
    在这里插入图片描述
  2. 配置查看结果树
    配置查看结果树之后才能查看请求的记录,配置路径 添加 -》监听器 -》查看结果树
    在这里插入图片描述
  3. 启动线程组验证
    在这里插入图片描述
    启动之后,可以在查看结果树查看请求记录
    在这里插入图片描述
    点击黄色的感叹号,可以查看运行的日志
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/214542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis是如何进行分页的?

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

Django系列之Celery异步框架+RabbitMQ使用

在Django项目中&#xff0c;如何集成使用Celery框架来完成一些异步任务以及定时任务呢&#xff1f; 1. 安装 pip install celery # celery框架 pip install django-celery-beat # celery定时任务使用 pip install django-celery-results # celery存储结果使用2. Django集成…

gin投票系统3

对应视频v1版本 1.优化登陆接口 将同步改为异步 原login前端代码&#xff1a; <!doctype html> <html lang"en"> <head><meta charset"utf-8"><title>香香编程-投票项目</title> </head> <body> <m…

开关量防抖滤波器(梯形图和SCL源代码)

模拟量防抖超限报警功能块请查看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/133969425https://rxxw-control.blog.csdn.net/article/details/133969425 1、开关量防抖滤波器 2、防抖滤波 3、梯形图代码

useMemo和useCallback

useMemo和useCallback是React中的两个优化性能的钩子&#xff08;Hooks&#xff09;。它们都可以用来缓存计算结果&#xff0c;避免在每次渲染时都重新执行耗时的操作。然而&#xff0c;它们的主要区别在于缓存的内容和使用场景。 useMemo useMemo用于缓存那些计算成本较高的值…

2.Feign使用、上下文隔离及源码阅读

目录 概述使用配置pom.xmlfeign 接口编写controller 测试降级处理pom.xmlapplication.yml代码 Feign如何初始化及调用源码阅读初始化调用 feign的上下文隔离机制源码 结束 概述 阅读此文&#xff0c;可以知晓 feign 使用、上下文隔离及源码阅读。源码涉及两方面&#xff1a;fe…

课后作业7.3.1:构造一个自己的小操作系统

构造一个自己的 mini 操作系统 任务描述 请实现如下功能&#xff1a; 1.写一个命令解释器程序 mysh.c &#xff0c;其功能是接收用户输入的命令并给出反馈。要求该程序既支持内部命令 cd、sync、exit &#xff1b;也支持外部命令&#xff0c;即可以接收 cat、ls 等命令&#x…

数据结构与算法-Rust 版读书笔记-2线性数据结构-双端队列

数据结构与算法-Rust 版读书笔记-2线性数据结构-双端队列 1、双端队列 deque又称为双端队列&#xff0c;双端队列是与队列类似的项的有序集合。deque有两个端部&#xff1a;首端和尾端。deque不同于队列的地方就在于项的添加和删除是不受限制的&#xff0c;既可以从首尾两端添…

vue3封装接口

在src下面创建一个文件夹任意名称 我拿这个名字举例子了apiService 相当于创建一个新的文件 // 封装接口 // apiService.js import axios from axios;// 接口前缀 const API_BASE_URL 前缀;接口后缀export const registerUser async (fileData) > {try {const response …

数据分析 | 频率编码和标签编码 | Python代码

数据集见GitHub链接&#xff1a;https://github.com/ChuanTaoLai/Frequency-Encoding-And-Label-Encoding 标签编码&#xff1a; import pandas as pd from sklearn.preprocessing import LabelEncoderdata1 pd.read_excel(rD:\0文献整理\网络入侵检测\KDD99\KDDTrain.xlsx) …

透析跳跃游戏

关卡名 理解与贪心有关的高频问题 我会了✔️ 内容 1.理解跳跃游戏问题如何判断是否能到达终点 ✔️ 2.如果能到终点&#xff0c;如何确定最少跳跃次数 ✔️ 1. 跳跃游戏 leetCode 55 给定一个非负整数数组&#xff0c;你最初位于数组的第一个位置。数组中的每个元素代表…

微信商家收款码扣多少手续费

很多人想申请低手续费率的收款码不知从何下手&#xff0c;在参考了大量博客教学之后&#xff0c;终于搞懂了详细流程以及注意事项。在此记录一下。我申请的是一个只需要0.2%费率的微信收款码&#xff0c;申请时间是2022年2月12日。申请之前只需要准备营业执照和法人身份z&#…

JSON在线解析

JSON在线解析及格式化验证 - JSON.cn JSON在线视图查看器(Online JSON Viewer)

java中list的addAll用法详细实例?

List 的 addAll() 方法用于将一个集合中的所有元素添加到另一个 List 中。下面是一个详细的实例&#xff0c;展示了 addAll() 方法的使用&#xff1a; java Copy code import java.util.ArrayList; import java.util.List; public class AddAllExample { public static v…

设计模式: 关于编程范式的声明式和命令式编程及应用框架的开发和设计原则

编程范式 命令式编程声明式编程 上述两种范式是相对来说的 命令式编程 详细描述做事过程的方式就可以叫做 命令式例子: 张三妈妈让张三买食盐 拿钱&#xff0c;开门&#xff0c;下楼&#xff0c;到商店&#xff0c;付款&#xff0c;带着食盐回家 例子&#xff1a;在指定div…

验证二叉搜索树[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你一个二叉树的根节点root&#xff0c;判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下&#xff1a; 【1】节点的左子树只包含 小于 当前节点的数。 【2】节点的右子树只包含 大于 当前节点的数。 【3】所有左子树和右…

Leetcode 40 组合总和 II

题意理解&#xff1a; 每个数字在每个组合中只能使用 一次 数字可以重复——>难点&#xff08;如何去重&#xff09; 每个组合和target 求组合&#xff0c;对合限制&#xff0c;考虑回溯的方法。——将其抽象为树结构。 树的宽度——分支大小 树的深度——最…

Spring IoC和DI

目录 一. Spring是什么 IoC DI 二. IoC&DI的使用 IoC 1.Controller&#xff08;控制器存储&#xff09; 2.Service&#xff08;服务存储&#xff09; 3.Repository&#xff08;仓库存储&#xff09; 4.Componemt&#xff08;组件存储&#xff09; 5.Configuratio…

解决Could not establish connection to : XHR failed

解决Could not establish connection to : XHR failed 问题描述 用vscode用远程连接服务器时总报上面的错误&#xff0c;用xshell和Xftp和vscode终端都可以连上&#xff0c;但是用vscode的ssh连接缺总报错&#xff0c;导致无法连接服务器进行代码调试 一、原因 原因可能是在…

【MATLAB】 数据、矩阵、行、列翻转

1.MATLAB函数fliplr 用法&#xff1a;fliplr(X) 功能&#xff1a;matlab中的fliplr函数实现矩阵的左右翻转。 fliplr(X)使矩阵X沿垂直轴左右翻转。 相关函数&#xff1a;flipud函数可以实现矩阵的上下翻转。 备注&#xff1a;matlab中提供了许多对矩阵操作的函数&#xff0c;可…