【问题标题】:Vars.get returns a null valueVars.get 返回一个空值
【发布时间】:2021-12-03 04:33:47
【问题描述】:
def signValue = '${signature_value}.${timestamp}.${signature_value}'
def token_secret = '${APP_CLIENT_SECRET}'
log.info("token is " + signValue)
def signingKey = new javax.crypto.spec.SecretKeySpec(signValue.getBytes(),"HmacSHA256");
def mac = javax.crypto.Mac.getInstance("HmacSHA256")
mac.init(signingKey);
def hmac = mac.doFinal(token_secret.getBytes());
def result = hmac.encodeBase64().toString()
---- I want to use the above "result" variable into a Http sampler request body------
---- I tried many possible ways but I end up is getting value as null or some error--
//${__groovy(vars.get("result"))}
//vars.put("signature", vars.get(result))

我一直在尝试提取变量“result”的值并在 HTTP 采样器结果中使用它。但我最终得到一个空值或其他一些错误。任何人都可以帮我解决这个问题。

谢谢!

【问题讨论】:

    标签: groovy jmeter load-testing jmeter-5.0 jsr223


    【解决方案1】:

    我不明白这一点,result 应该是一个String 对象,这不是您所期望的吗? 无论如何,signValuetoken_secret 可能与您的期望不同:使用单引号而不是双引号,您没有使用 GStrings(例如,token_secret 的值将始终完全是 '${APP_CLIENT_SECRET}',无论APP_CLIENT_SECRET的值)

    【讨论】:

      【解决方案2】:

      改变这一行:

      vars.put("signature", vars.get(result))
      

      到这里:

      vars.put("signature", result)
      

      也不要像这样将 JMeter 变量内联到 Groovy 脚本中:

      def token_secret = '${APP_CLIENT_SECRET}'
      

      改用vars 简写:

      def token_secret = vars.get('APP_CLIENT_SECRET')
      

      因为:

      • Groovy GStrings冲突

      • 为了获得最佳性能,建议缓存已编译的脚本(默认启用)

        在这种模式下,JMeter 只解析第一个值并缓存它,这意味着每次迭代都会得到相同的值

      更多信息:

      【讨论】:

      • 好的,将如前所述使用 token_secret。但是,如果我使用 vars.get(),我如何连接下面的 ``` def signValue = '${signature_value}.${timestamp}.${signature_value}' ``` 我会出错。另外,如何获得变量值的长度。谢谢!
      • 您需要使用双引号来评估变量。 def signValue = "${signature}.${__time()}.${signature}"。详情请查看 Groovy 中插值的工作原理4.4.1. String interpolation
      • 您可以调用 Groovy 的 length() 函数来获取变量值的长度。 def lengthOfVar = signValue.length()
      【解决方案3】:

      vars结果:

       vars.put("signature", hmac.encodeBase64().toString());
      

      在 HTTP 中使用 ${signature}

      【讨论】:

        猜你喜欢
        • 2015-10-09
        • 2014-02-11
        • 2021-12-05
        • 1970-01-01
        • 1970-01-01
        • 2016-07-17
        • 2021-04-14
        • 2017-09-02
        • 2018-04-22
        相关资源
        最近更新 更多