我发送以下请求时带有一个参数化参数$ {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\\");\nelse\nprintf(\\"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"}
如果您在没有参数化的情况下发送上述请求(输入值),那么它可以正常工作。
请告诉我如何解决此问题。
答案 0 :(得分:0)
我假设这是一个POST HTTP请求,而body部分有这个数据
请你把HTTP主体指向下面的相对路径从bin目录开始
${__eval(${__FileToString(path/to/payloadfile.txt,,)})}
现在,payloadfile.txt可以包含实际内容,它还会评估$ {ID}和其他变量。
如果有帮助,请不要忘记点击已回答。乐于助人,快乐测试
修正:
我使用过在线工具:
首先看到fisrt地方的数据是合适的https://jsonformatter.curiousconcept.com/
我看到了这个
{
"Data":{
"Source":"#include <stdio.h\/>\r\n int main()\r\n {\r\n int n;\r\n printf(\"Enter an integer\");\r\n scanf(\"%d\", &n);\r\n if (n%2 == 0)\r\n printf(\"Even\");\r\n else\r\n printf(\"Odd\");\r\n return 0;\r\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"
}
我单独分离了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\/>\r\n int main()\r\n {\r\n int n;\r\n printf(\"Enter an integer\");\r\n scanf(\"%d\", &n);\r\n if (n%2 == 0)\r\n printf(\"Even\");\r\n else\r\n printf(\"Odd\");\r\n return 0;\r\n }
这是我使用的那个,它显示了有效的json文档。如果你没有发送有效的json文件服务器会抛出错误。不要在HTTP sampler中选择编码