Java 在JMeter中请求签名

Java 在JMeter中请求签名,java,jmeter,Java,Jmeter,我需要发送一个sha256十六进制请求签名以及http请求 从其他问题和答案来看,有人建议使用BeanShell预处理器,但这似乎不再有效 还有其他方法吗 这是我在BeanShell预处理器中的代码 import org.apache.commons.codec.digest.DigestUtils; String api_key = ""; String shared_secret = ""; long timestamp = System.curre

我需要发送一个sha256十六进制请求签名以及http请求

从其他问题和答案来看,有人建议使用BeanShell预处理器,但这似乎不再有效

还有其他方法吗

这是我在BeanShell预处理器中的代码

import org.apache.commons.codec.digest.DigestUtils;

String api_key = "";
String shared_secret = "";
long timestamp = System.currentTimeMillis()/1000;

String sig = DigestUtils.md5(api_key + shared_secret + timestamp);

vars.put("sig", sig);

log.info("Signature: " + sig);
这就是错误所在

2020-07-23 10:18:55,694 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.apache.commons.codec.digest.DigestUtils;  String api_key = "35yNeSe37 . . . '' : Typed variable declaration
2020-07-23 10:18:55,694 WARN o.a.j.m.BeanShellPreProcessor: Problem in BeanShell script. org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``import org.apache.commons.codec.digest.DigestUtils;  String api_key = "35 . . . '' : Typed variable declaration
2020-07
  • 如果您声明需要“sha256十六进制”,为什么要使用
  • 你为什么要用Beanshell如果
  • 我认为您应该将代码更改为:

    vars.put("sig", org.apache.commons.codec.digest.DigestUtils.sha256Hex(api_key + shared_secret + timestamp))
    
    有关JMeter中Groovy脚本的更多信息,请参阅本文

    顺便说一下,有一些方法可以让你的生活更轻松:


    这是因为DigestUtils返回一个字节。我们需要创建一个新字符串(DigestUtils.md5(api_key+shared_secret+timestamp));请你也研究一下下面的问题,让我知道它是否可以实现:对不起。我粘贴的代码是我以前尝试过的md5。关于使用beanshell而不是Groovy的问题,我使用了它,我发现它很有效。我将尝试Groovy解决方案。