Как получить значение переменной, сгенерированное в препроцессоре JSR223, и использовать в диспетчере заголовков HTTP - PullRequest
0 голосов
/ 18 марта 2020

Я написал один скрипт в процессоре JSR223 Pre в groovy и использую значение подписи в диспетчере заголовков HTTP. Но я получаю 1 в заголовке ответа. Я использую свойство, чтобы получить значение и сохранить в менеджере заголовка. Тем не менее, я не могу получить правильное значение в ответе на заголовок:

Соединение: keep-alive

Тип содержимого: application / json

TEST_REQUEST: test

Подпись X-Hub: sha1 = 1

Длина содержимого: 454

Хост: api.netomi.com

Пользователь-агент: Apache -HttpClient / 4.5.10 (Java / 13.0.1)

Ниже скрипт, который я использую в JSR223

 {  
    Mac mac = Mac.getInstance("HmacSHA1");
    SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(), "HmacSHA1");
    mac.init(secretKeySpec);
    byte[] digest = mac.doFinal(b64encodedPayload.getBytes());
    encodedData = digest.encodeHex();
    log.info("HMAC SHA256 base64: " + encodedData);
    ${__setProperty(token, ${encodedData})}
    props.put("token", encodedData);
}

Я получаю значение в диспетчере заголовков как $ {__ P (токен)}

Saving the value in property file and generate the signature

1 Ответ

0 голосов
/ 19 марта 2020
  1. Ваш код Groovy выглядит хорошо (кроме использования функции __setProperty () , вам не следует использовать функции или переменные JMeter в сценариях JSR223 )

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

  2. Ваша __ P () функция использование также правильно

Единственная причина Я могу подумать, что вы где-то как-то нарушаете Правила Скоринга JMeter . Попробуйте установить и препроцессор JSR223, и менеджер заголовка HTTP в качестве дочерних элементов сэмплера HTTP Request, который вы хотите изменить, и он должен решить вашу проблему:

enter image description here

...