Groovy 如何获取JSR223预处理器中生成的变量值并在HTTP头管理器中使用

Groovy 如何获取JSR223预处理器中生成的变量值并在HTTP头管理器中使用,groovy,jmeter,http-headers,jsr223,hmacsha1,Groovy,Jmeter,Http Headers,Jsr223,Hmacsha1,我在groovy中的JSR223预处理器中编写了一个脚本,并在HTTP头管理器中使用签名值。 但我的头球得分是1。我正在使用属性获取值并存储在Header manager中。我仍然无法在输出中获得正确的值 标题响应: 连接:保持活力 内容类型:application/json 测试请求:测试 X-Hub-Signature:sha1=1 内容长度:454 主持人:api.netomi.com 用户代理:ApacheHttpClient/4.5.10(Java/13.0.1) 下面是我在JSR22

我在groovy中的JSR223预处理器中编写了一个脚本,并在HTTP头管理器中使用签名值。 但我的头球得分是1。我正在使用属性获取值并存储在Header manager中。我仍然无法在输出中获得正确的值 标题响应:

连接:保持活力

内容类型:application/json

测试请求:测试

X-Hub-Signature:sha1=1

内容长度:454

主持人:api.netomi.com

用户代理:ApacheHttpClient/4.5.10(Java/13.0.1)

下面是我在JSR223中使用的脚本

 {  
    Mac mac = Mac.getInstance("HmacSHA1");
    SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(), "HmacSHA1");
    mac.init(secretKeySpec);
    byte[] digest = mac.doFinal(b64encodedPayload.getBytes());
    encodedData = digest.encodeHex();
    log.info("HMAC SHA256 base64: " + encodedData);
    ${__setProperty(token, ${encodedData})}
    props.put("token", encodedData);
}
我正在以${uu p(令牌)}的形式获取头管理器中的值

  • Groovy代码看起来不错(除了使用

    使用此功能时,请确保脚本代码不直接在脚本代码中使用JMeter变量,因为缓存只会缓存第一次替换。而是使用脚本参数

  • 你的用法也是正确的

  • 我能想到的唯一原因是你不知何故侵犯了别人的权利。尝试将JSR223预处理器和HTTP头管理器作为要修改的HTTP请求采样器的子项,它应该可以解决您的问题: