Как правильно извлечь ключ.pem из ответа на запрос с помощью экстрактора JSON

Я использую 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 ответа

Решение

Вы никогда не должны использовать ${} в скрипте Groovy в JMeter.

Вместо этого сделайте это:

log.info ("Получил ключ:{}", vars["ключ"]);

При условии, что ваша переменная называется ключом

И вот как вы должны настроить JSON Extractor:

JSON Extractor

Поскольку вы уже используете тестовые элементы JSR223, вам не нужен JSON Extractor, ключ PEM можно извлечь и распечатать за один раз с помощью JSR223 PostProcessor

  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 в журнал

  4. Конечно, вы сможете получить к нему доступ как ${key} в других тестовых элементах

Рекомендации:


В дальнейшем, пожалуйста, избегайте использования функций и / или переменных JMeter в скриптах Groovy, поскольку они конфликтуют с шаблонами Groovy GString, могут быть преобразованы во что-то, что приводит к сбою компиляции или времени выполнения и несовместимо с кэшированием скомпилированных скриптов Groovy, что отрицательно влияет на производительность JMeter.

Другие вопросы по тегам