Отправка запроса JSON POST с помощью препроцессора BSF - PullRequest
8 голосов
/ 20 сентября 2011

Я работаю с JMeter, чтобы написать несколько тестов производительности.Одна из вещей, которые мне нужно сделать, - это динамически создать огромный JSON-запрос и отправить его в виде POST-запроса.Используя препроцессор BSF, я могу динамически изменять полезную нагрузку, однако моя строка javascript кодируется, и я хочу отправить ее без кодирования.

Я не уверен, как препроцессор BSF может остановить его от кодирования.Команда, которую я сейчас использую для изменения полезной нагрузки POST-запроса, выглядит следующим образом:

var jsonData = '[{"item":"value","something":"everything"}]';
sampler.addArgument("",jsonData);

Я был бы очень признателен, если бы вы указали мне несколько примеров, которые четко объясняют, как ожидается использование препроцессоров bsf.

Любые указатели для пропуска кодировки также будут оценены.

Ответы [ 2 ]

1 голос
/ 09 сентября 2012

Начиная с JMeter 2.6, вы можете использовать панель запросов RAW, используя вкладку Post Body .

Таким образом, ваше решение заключается в следующем:

  1. В BSF Sampler поместите JSON в переменную:

    var jsonData = '[{"item":"value","something":"everything"}]';
    vars.putObject("jsonData",jsonData);
    
  2. В Post Body введите:

    ${jsonData}
    

Другой вариантИспользуя ваш метод, вы должны поместить в BSFPreProcessor язык Beanshell (не javascript):

import org.apache.jmeter.protocol.http.util.HTTPArgument;
String jsonData = "[{\"item\":\"value\",\"something\":\"everything\"}]";
HTTPArgument arg =new HTTPArgument("", jsonData, null, true);
arg.setAlwaysEncoded(false);
sampler.getArguments().addArgument(arg);

С уважением

Филипп М.

0 голосов
/ 09 мая 2012

установить для свойства вашего сэмплера "HTTPArgument.always_encode" значение false, это должно отключить кодировку аргумента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...