如何使用 JSON 提取器从请求响应中正确提取 .pem 密钥
How to correctly extract .pem key from request response with JSON extrator
我正在使用 jmeter JSON 提取器 JSON 看起来像这样
{"type":"rpc","tid":7,"action":"SecurityManager","method":"getAuthenticationKey","result":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAydpVbheWPx4ZMbxJ8yCm\ndcP2EaRZD2R4PUmuFhdDdvpxT\/so00\/22orFQMgw8hrgEZ07ISzarOlclchm7DtF\nzxUzjGon1d5OJ2\/61niT+bAyuykn7y63\/BEtGS3KsR9ez3Ds+JR04Tca\/ajUYAIo\nrtAdCuvQuWkk4ZmZWywa7n899KOndL8S3G0R9Bex5XwfXJoE2BC6Ww75gwkzANFX\nIqkTYeepIMai3B8H31VIW2aJXURbjgN4yrk4sOy5a5JqnPEeCPKJR3nCrZDZGG06\ncoq0swW8oegNI9SFsiIqpDQ6Fi4WqqH5EMNu6FrkF3HAqwwyGljnogGNdnkwajiu\nCQIDAQAB\n-----END PUBLIC KEY-----\n"}
我正在尝试使用该值(例如只是显示它)
log.info("${key}")
,但我收到错误
o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script26.groovy: 8: expecting anything but ''\n''; got it anyway @ line 8, column 39.
log.info("-----BEGIN PUBLIC KEY-----
有什么地方我做得不对吗?
你不应该在 JMeter 的 Groovy 脚本中使用 ${}。
改为这样做:
log.info("Got key:{}", vars["key"]);
前提是您的变量名为 key
这就是您配置的方式 JSON Extractor:
鉴于您已经使用了 JSR223 测试元素,因此您不需要 JSON 提取器,可以通过 JSR223 PostProcessor
一次性提取和打印 PEM 密钥
- 将 JSR223 PostProcessor 添加为 returns 以上 JSON
请求的子项
将以下代码放入"Script"区域:
vars.put('key', new groovy.json.JsonSlurper().parse(prev.getResponseData()).result)
log.info(vars.get('key'))
享受日志查看器中的打印变量window
当然你可以在其他测试元素
中作为${key}
访问它
参考文献:
今后请避免在 Groovy 脚本中使用 JMeter 函数 and/or 变量,因为它们与 Groovy GString Templates 冲突,可能会被解析为导致编译或运行时的问题编译脚本的失败和不兼容 Groovy 缓存功能会对 JMeter 性能产生负面影响。
我正在使用 jmeter JSON 提取器 JSON 看起来像这样
{"type":"rpc","tid":7,"action":"SecurityManager","method":"getAuthenticationKey","result":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAydpVbheWPx4ZMbxJ8yCm\ndcP2EaRZD2R4PUmuFhdDdvpxT\/so00\/22orFQMgw8hrgEZ07ISzarOlclchm7DtF\nzxUzjGon1d5OJ2\/61niT+bAyuykn7y63\/BEtGS3KsR9ez3Ds+JR04Tca\/ajUYAIo\nrtAdCuvQuWkk4ZmZWywa7n899KOndL8S3G0R9Bex5XwfXJoE2BC6Ww75gwkzANFX\nIqkTYeepIMai3B8H31VIW2aJXURbjgN4yrk4sOy5a5JqnPEeCPKJR3nCrZDZGG06\ncoq0swW8oegNI9SFsiIqpDQ6Fi4WqqH5EMNu6FrkF3HAqwwyGljnogGNdnkwajiu\nCQIDAQAB\n-----END PUBLIC KEY-----\n"}
我正在尝试使用该值(例如只是显示它)
log.info("${key}")
,但我收到错误
o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script26.groovy: 8: expecting anything but ''\n''; got it anyway @ line 8, column 39.
log.info("-----BEGIN PUBLIC KEY-----
有什么地方我做得不对吗?
你不应该在 JMeter 的 Groovy 脚本中使用 ${}。
改为这样做:
log.info("Got key:{}", vars["key"]);
前提是您的变量名为 key
这就是您配置的方式 JSON Extractor:
鉴于您已经使用了 JSR223 测试元素,因此您不需要 JSON 提取器,可以通过 JSR223 PostProcessor
一次性提取和打印 PEM 密钥- 将 JSR223 PostProcessor 添加为 returns 以上 JSON 请求的子项
将以下代码放入"Script"区域:
vars.put('key', new groovy.json.JsonSlurper().parse(prev.getResponseData()).result) log.info(vars.get('key'))
享受日志查看器中的打印变量window
当然你可以在其他测试元素
中作为
${key}
访问它
参考文献:
今后请避免在 Groovy 脚本中使用 JMeter 函数 and/or 变量,因为它们与 Groovy GString Templates 冲突,可能会被解析为导致编译或运行时的问题编译脚本的失败和不兼容 Groovy 缓存功能会对 JMeter 性能产生负面影响。