1. По ссылке 18.1.2 HTTP-запрос
Обработка параметров:
Для методов POST и PUT, если файл для отправки отсутствует, а имена параметров не указаны, затем
тело создается путем объединения всех значений
параметры. Это позволяет отправлять произвольные тела. Значения
кодируется, если установлен флаг кодирования (версии JMeter после 2.3).
Поэтому, если вы хотите решить свою проблему только с помощью стандартной функции HTTP Sampler, вам не нужно использовать файл для вашего запроса POST и установить $ {myvar} в качестве параметра запроса без имени, как указано выше.
Поскольку этот подход кажется не очень применимым в вашем случае, вы можете попробовать следующее:
2. Перепишите свой файл, чтобы установить $ {myvar} в фактическое значение перед использованием в запросе HTTP.
Вы можете сделать это с помощью BSF PreProcessor / BeanShell PreProcessor - оба подключены непосредственно к «целевому» HTTP-запросу - или BSF Sampler / BeanShell Sampler - они должны быть размещены перед «целевым» HTTP-запросом.
Код для перезаписи сэмплера может быть следующим (бобовая оболочка):
// parsing params passed to script
String [] params = Parameters.split(",");
// setting values from params
String postFile = params[0];
String myVarValue = params[1];
StringBuilder data = new StringBuilder();
BufferedReader in = new BufferedReader(new FileReader(project.getProperty("basedir") +
System.getProperty("file.separator") + postFile));
char[] buf = new char[1024];
int numRead = 0;
while ((numRead = in.read(buf)) != -1) {
data.append(buf, 0, numRead);
}
in.close();
// re-writting ${myvar} with actual value
String temp = data.toString().replaceAll("\\$\\{myvar\\}", myVarValue);
Writer out = new BufferedWriter(new FileWriter(project.getProperty("basedir") +
System.getProperty("file.separator") + postFile));
out.write(temp);
out.close();