MeterSphere 版本: v2.10.5-lts-0ba6e94d
运行方式:安装包运行
文件管理中上传了jar包
但接口调试时,还是会报错:
2023-09-01 13:54:07 ERROR ab53facc 1-1 Error invoking bsh method: eval |
Sourced file: inline evaluation of: ``import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.sec . . . ‘’ : Typed variable declaration : Typed variable declaration : Typed variable declaration |
2023-09-01 13:54:07 WARN ab53facc 1-1 Problem in BeanShell script. org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval |
Sourced file: inline evaluation of: ``import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.sec . . . ‘’ : Typed variable declaration : Typed variable declaration : Typed variable declaration |
脚本是否可以发出看看,这个报错跟eval方法相关,看起来跟jar包没有关系。
可以确定,不是脚本的问题,脚本在本地可以跑,性能测试也可以跑,就是在接口测试的时候报错
代码在jmeter本地跑是没有问题的
//核心代码如下
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.xml.bind.DatatypeConverter;
import java.util.Base64;
public static String getTime(){
return (new Date()).getTime()+“”;
}
public static byte[] sign(String message, String secretKey)
throws NoSuchAlgorithmException, InvalidKeyException {
Mac hmacSha256 = Mac.getInstance(“HmacSHA256”);
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(), “HmacSHA256”);
hmacSha256.init(secretKeySpec);
return hmacSha256.doFinal(message.getBytes());
}
public static String getSign(){
TreeMap sortedParams = new TreeMap();
sortedParams.put(“timestamp”,“123123123”);
sortedParams.put(“receiveWindow”,“100000”);
Set entrySet = sortedParams.entrySet();
StringBuilder baseString = new StringBuilder();
for (Map.Entry param : entrySet) {
baseString.append(param.getKey()).append("=");
if (param.getValue() != null) {
baseString.append(param.getValue()).append("&");
}
}
baseString.deleteCharAt(baseString.length() - 1);
// baseString.append(“receiveWindow=10000”)
// log.info(baseString.toString());
vars.put(“create_order”,baseString.toString());
// log.info(secretKey);
String result = DatatypeConverter.printHexBinary(sign(baseString.toString(),secretKey));
// log.info(result.toString().toLowerCase());
return result.toLowerCase();
}
String signature = getSign();
vars.put(“signature”, signature);