Vars.get returns 空值
Vars.get returns a null value
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 采样器结果中使用它。但我最终得到了一个空值或其他一些错误。谁能帮我解决这个问题。
谢谢!
我没明白,result
应该是一个String
对象,这不是你期望的吗?
无论如何,signValue
和 token_secret
可能与您的期望不同:使用单引号而不是双引号您没有使用 GStrings
(例如 token_secret
的值将始终恰好 '${APP_CLIENT_SECRET}'
,无论 APP_CLIENT_SECRET
)
的值如何
输入vars
结果:
vars.put("signature", hmac.encodeBase64().toString());
并且在 HTTP 中使用 ${signature}
更改此行:
vars.put("signature", vars.get(result))
对此:
vars.put("signature", result)
也不要像这样将 JMeter 变量内联到 Groovy 脚本中:
def token_secret = '${APP_CLIENT_SECRET}'
使用 vars
shorthand 代替:
def token_secret = vars.get('APP_CLIENT_SECRET')
因为:
- 冲突
为了获得最佳性能,建议缓存编译脚本(默认启用)
在这种模式下,JMeter 仅解析第一个值并将其缓存,这意味着您将在每次迭代中获得相同的值
更多信息:
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 采样器结果中使用它。但我最终得到了一个空值或其他一些错误。谁能帮我解决这个问题。
谢谢!
我没明白,result
应该是一个String
对象,这不是你期望的吗?
无论如何,signValue
和 token_secret
可能与您的期望不同:使用单引号而不是双引号您没有使用 GStrings
(例如 token_secret
的值将始终恰好 '${APP_CLIENT_SECRET}'
,无论 APP_CLIENT_SECRET
)
输入vars
结果:
vars.put("signature", hmac.encodeBase64().toString());
并且在 HTTP 中使用 ${signature}
更改此行:
vars.put("signature", vars.get(result))
对此:
vars.put("signature", result)
也不要像这样将 JMeter 变量内联到 Groovy 脚本中:
def token_secret = '${APP_CLIENT_SECRET}'
使用 vars
shorthand 代替:
def token_secret = vars.get('APP_CLIENT_SECRET')
因为:
- 冲突
为了获得最佳性能,建议缓存编译脚本(默认启用)
在这种模式下,JMeter 仅解析第一个值并将其缓存,这意味着您将在每次迭代中获得相同的值
更多信息: