четверг, 10 января 2013 г.

Кодировка ответа Sampler в Jmeter.

Кодировка ответа Sampler в Jmeter.

Иногда при работе с Jmeter,в ответах на ваши запросы он использует  неправильную кодировку.
Дело в том,что можно поставить кодировку контента(то бишь отправляемых значений),а получаемых нет.
Это можно исправить(правда способ костыльный,хотя рабочий)-используем BeanShell Jmeter.

Небольшая справка о переменных Jmeter в BeanShell для тех кто не в курсе:
  • log - (Logger) - Можно использовать для записи лога в файл.
  • ctx - (JMeterContext) - Доступ к контексту.
  • vars - ( JMeterVariables ) - Позволяет читать/записывать значения в переменные Jmeter: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object());
  • props - (JMeterProperties - class java.util.Properties) -собственно класс свойств из Java  props.get("START.HMS"); props.put("PROP1","1234");
  • prev - (SampleResult) - Доступ к предыдущему ответу.
  • sampleEvent (SampleEvent) доступ к текущему событию.
Собственно,если мы хотим поменять кодировку ответа на определенный запрос,то к запросу добавляем BS PostProcessor
с кодом

prev.setDataEncoding("UTF-8"); 

И все.Был рад помочь.

5 комментариев:

  1. Привет! Очень необходимо решить данную проблему, добавление BSF скрипта выводит в лог 2013/07/23 09:37:56 ERROR - org.apache.bsf.BSFManager: unsupported language:
    2013/07/23 09:37:56 WARN - jmeter.extractor.BSFPostProcessor: Problem in BSF script org.apache.bsf.BSFException: unsupported language: Есть мысли, как победить?

    ОтветитьУдалить
  2. Разобрался со скриптом, добавил параметр language beanshell, но ответ все равно содержит строки

    "firstName": "Алексей",
    "middleName": "Васильевич",
    "lastName": "Кочетов"

    ОтветитьУдалить
  3. Вы точно добавляете beanshell, постпроцессором к нудному запросу,на е отдельным семплером?

    ОтветитьУдалить
  4. Сергей, привет!

    В обзем проблема оказалась косвенно на стороне сервера, он отдавал неверно результаты, тем не менее на стороне клиента есть тоже проблемы - самая загвоздка в том, что если из дерева убрать JSONPostFormatter (сэмплер, который удобно форматирует json) - то все начинает отображаться ок с биншелл постпроцессором, странная логика, но я вроде свыкся, что в результате получаю простыню, а не отформатированные крякозябры.

    ОтветитьУдалить