如何使用JSON Extrator从请求响应中正确提取.pem密钥

时间:2018-09-19 14:45:43

标签: jmeter jmeter-4.0

我正在将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-----

我有没有做对的事情?

2 个答案:

答案 0 :(得分:1)

永远不要在JMeter的Groovy脚本中使用$ {}。

相反,这样做:

  

log.info(“ Got key:{}”,vars [“ key”]);

提供的变量名为key

这就是配置JSON Extractor的方式:

JSON Extractor

答案 1 :(得分:0)

鉴于您已经使用了JSR223测试元素,而您不需要JSON提取器,则可以通过JSR223 PostProcessor

提取并打印PEM密钥。
  1. 将JSR223 PostProcessor添加为返回上述JSON的请求的子项
  2. 将以下代码放入“脚本”区域:

    vars.put('key', new groovy.json.JsonSlurper().parse(prev.getResponseData()).result)
    log.info(vars.get('key'))
    
  3. 在Log Viewer窗口中享受打印的变量

    JMeter Print Variable into log

  4. 您当然可以在其他测试元素中以${key}的身份访问它

参考文献:


继续,请避免在Groovy脚本中使用JMeter函数和/或变量,因为它们与Groovy GString Templates冲突,可能会解决导致编译或运行时失败并且与Groovy缓存已编译脚本功能不兼容的问题对JMeter的性能产生负面影响。