Динамическая запись при публикации тела json в jmeter - PullRequest
0 голосов
/ 08 ноября 2018

Я пытался написать нагрузочный тест jmeter для защищенного веб-сервиса SAML. Так что у меня есть сэмплер http запроса, который получает код доступа и сохраняет в переменной с именем access_code. Но веб-сервис принимает почтовый запрос в виде:

api.service.edu / api / аутентификация с данными тела в виде {"code": "$ {access_code}", "redirect_uri": "некоторый сайт"}.

но всякий раз, когда я пытался запустить jmeter, мой сэмплер выдает следующую ошибку:

Имя темы: основной поток использования приложения 1-1 Пример запуска: 2018-11-07 21:08:50 EST Время загрузки: 1209 Время подключения: 0 Латентность: 1208 Размер в байтах: 370 Отправлено байтов: 0 Размер заголовков в байтах: 324 Размер тела в байтах: 46 Количество образцов: 1 Количество ошибок: 1 Тип данных ("text" | "bin" | ""): text Код ответа: 500 Ответное сообщение: Внутренняя ошибка сервера

Поля HTTPSampleResult: ContentType: application / json; кодировка = UTF-8 DataEncoding: utf-8

это из-за того, как я анализирую код доступа? Если да, то как мне проанализировать динамическое значение с помощью json-запроса? * 1011

1 Ответ

0 голосов
/ 08 ноября 2018
  1. Код состояния HTTP 500 означает Внутренняя ошибка сервера , в соответствии со спецификацией протокола HTTP, проблема на стороне сервера, поскольку коды состояния клиента (т.е. некорректные запросы) должны иметь статус HTTP код между 400 и 499. Поэтому я бы порекомендовал проверить журналы на стороне сервера, скорее всего, вы сможете выяснить, что с ними не так.
  2. Возможно, ваша переменная ${access_code} не определена, т. Е. Соответствующая Постпроцессор не смог извлечь ее из предыдущего ответа. Дважды проверьте его значение, используя Debug Sampler и Просмотр дерева результатов комбинация слушателей
  3. Возможно, ваша переменная ${access_code} содержит некоторые специальные символы, которые не разрешены в JSON, и необходимо экранировать

    • Backspace заменяется на \b
    • Подача формы заменена на \f
    • Новая строка заменена на \n
    • Перевозки Возврат заменен на \r
    • Вкладка заменена на \ t
    • Двойная кавычка заменяется на \"
    • Обратная косая черта заменена на \\

    Если ваша переменная ${access_code} содержит что-либо из вышеперечисленного - полученный JSON будет неверным. Чтобы быть в безопасности, я бы рекомендовал заменить ссылку на переменную ${access_code} на функцию __ groovy () call

    ${__groovy(org.apache.commons.lang3.StringEscapeUtils.escapeJson(vars.get('access_code')),)}
    
  4. Возможно, вы отправляете неправильный заголовок Content-Type , поэтому обязательно добавьте Диспетчер заголовков HTTP и настройте его для отправки application/json как тип контента
...