背景
jmeter接口验签逻辑是从请求参数中获取值处理加密验签后,讲请求参数中的sign值替换
如果处理后直接讲sign生成Jmeter变量,在当前请求是无法替换的,因为jmeter请求的URL和body已经运行,不会再重新运行替换
解决方法
在当前预处理程序中再写处理当前请求的逻辑
// 替换URL中的sign参数
String newQuery = decodedQuery.replaceAll("sign=[^&]*", "sign=" + URLEncoder.encode(sign, "UTF-8"));
String newUrl = url.replace(query, newQuery);
sampler.setPath(newUrl);
log.info("Updated URL: " + newUrl);// 替换body中的sign参数
String newBody = params.replaceAll("\"sign\":\"\\$\\{sign\\}\"", "\"sign\":\"" + sign + "\"");
sampler.getArguments().getArgument(0).setValue(newBody);
log.info("Updated Request Body: " + newBody);