Jmeter:请求正文的参数化问题



我正在发送以下带有一个参数化参数 ${id} 的请求,请求看起来像 实际消息:

{"Data":"{"Source":"#include <stdio.h>\nint main()\n{\nint n;\nprintf(\"Enter an integer\");\nscanf(\"%d\", &n);\nif (n%2 == 0)\nprintf(\"Even\");\nelse\nprintf(\"Odd\");\nreturn 0;\n}","Lang":"c","callback_url":"callback_url_string","cid":"159:60719:2667:${id}"}","Action":"compile","TenantId":"159","UserId":"0","CID":"159:60719:2667:${id}","LanguageId":"25331"}

但是在发送请求时,JMETER正在更改请求(删除像\这样的少数格式)并发送到服务器,服务器以错误的请求响应进行响应。

JMETER发送如下:

{"Data":"{"Source":"#include <stdio.h>nint main()n{nint n;nprintf(\"Enter an integer\");nscanf(\"%d\", &n);nif (n%2 == 0)nprintf(\"Even\");nelsenprintf(\"Odd\");nreturn 0;n}","Lang":"c","callback_url":"callback_url_string","cid":"159:60719:2667:558019"}","Action":"compile","TenantId":"159","UserId":"0","CID":"159:60719:2667:558019","LanguageId":"25331"}

如果您在没有参数化(输入值)的情况下发送上述请求,那么它可以正常工作。

请让我知道如何解决此问题。

我假设这是一个 POST HTTP 请求,并且正文部分有这些数据

您能否将HTTP正文指向以下从bin目录开始的相对路径

${__eval(${__FileToString(path/to/payloadfile.txt,,)})}

现在有效负载文件.txt仍然可以具有实际内容,它将评估 ${ID} 和其他变量。

如果有帮助,请不要忘记单击已回答。乐于帮助,乐于测试

完善:

我使用过在线工具:

首先在第一个位置查看数据是一个正确的 https://jsonformatter.curiousconcept.com/

我看到这个

{  
   "Data":{  
      "Source":"#include <stdio.h/>rn int main()rn {rn int n;rn printf("Enter an integer");rn scanf("%d", &n);rn if (n%2 == 0)rn printf("Even");rn elsern printf("Odd");rn return 0;rn "
   },
   "Lang":"c",
   "callback_url":"callback_url_string",
   "cid":"159:60719:2667:${id}",
   "Action":"compile",
   "TenantId":"159",
   "UserId":"0",
   "CID":"159:60719:2667:${id}",
   "LanguageId":"25331"
}

我单独分离出C程序

#include <stdio.h/>
 int main()
 {
 int n;
 printf("Enter an integer");
 scanf("%d", &n);
 if (n%2 == 0)
 printf("Even");
 else
 printf("Odd");
 return 0;
 }

并使用在线工具应用转义字符 [应用的 Java 脚本转义]

http://www.freeformatter.com/javascript-escape.html#ad-output

输出:

#include <stdio.h/>rn int main()rn {rn int n;rn printf("Enter an integer");rn scanf("%d", &n);rn if (n%2 == 0)rn printf("Even");rn elsern printf("Odd");rn return 0;rn }

这是我使用的那个,它显示了有效的 JSON 文档。 如果您没有发送有效的 JSON 文档服务器将抛出错误。 不要在 HTTP 采样器中选择编码

最新更新