我正在发送以下带有一个参数化参数 ${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 采样器中选择编码