Jmeter在Http Rest接口中自动生成签名(Json格式请求参数)

时间:2024-04-08 17:32:56

第一步: 签名的java类生成jar包,导入到jmeter的lib目录下(依赖的第三方包也要导入)

第二步:编写jmeter脚本,这里使用BeanShell 进行签名串的生成,目录结构如下:

Jmeter在Http Rest接口中自动生成签名(Json格式请求参数)

Jmeter在Http Rest接口中自动生成签名(Json格式请求参数)

BeanShell 脚本如下:

 import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
import org.apache.jmeter.config.Arguments;
import com.unisound.ym.SignUtil;
import com.alibaba.fastjson.*;
import org.apache.jmeter.config.*; String accessKey = "${accessKey}";
String secretKey = "${secretKey}";
String timestamp = "${requestTime}"; log.info("accessKey----->{}",accessKey);
log.info("secretKey----->{}",secretKey);
log.info("timestamp----->{}",timestamp); //获取请求的Body参数
Arguments args = sampler.getArguments();
//json格式请求:body只有一个key为空的参数值
for(int i=0;i<args.getArgumentCount();i++){
String key = args.getArgument(i).getName();
String value = args.getArgument(i).getValue();
log.info("requst body:key={},value={}",key,value);
}
String requestJson = args.getArgument(0).getValue();
log.info("-------{}",requestJson); String ymMd5SignStr=SignUtil.md5Sign(requestJson,accessKey,secretKey,timestamp);
log.info("signatureStr--->{}",ymMd5SignStr);
vars.put("ymMd5SignStr",ymMd5SignStr);

关键代码:如何获取request body中的json字符串(HttpRest请求,注意header是application/json)

 //获取请求的Body参数
Arguments args = sampler.getArguments();
//json格式请求:body只有一个key为空的参数值
String requestJson = args.getArgument(0).getValue();

很简单吧!!!!

Jmeter在Http Rest接口中自动生成签名(Json格式请求参数)

测试脚本放入linux,命令行启动压测!!!