Jmeter:请求Body的参数化问题

时间:2016-05-25 14:04:21

标签: 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\\");\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"}

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

请告诉我如何解决此问题。

1 个答案:

答案 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中选择编码