2016-05-25 7 views
0

ich mit einer Parametrisierung Parameter $ {id} und Anfrage folgende Anfrage sende sieht aus wie Actual Nachricht:Jmeter: Parametrierung Problem mit Anfrage Körper

{"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"} 

Aber während die Anfrage Jmeter Senden verändert sich die Anfrage (Entfernen der wenigen Formate wie \ 's) und sendet an den Server und Server antwortet mit schlechter Anfrage Antwort.

Jmeter Sendet wie:

{"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"} 

WENN Sie oben Anfrage ohne Parametrierung (Werte eingeben) senden dann funktioniert es gut.

Bitte lassen Sie mich wissen, wie Sie dieses Problem beheben können.

Antwort

0

Ich gehe davon aus das ist eine POST HTTP-Anforderung und der Körperabschnitt hat diese Daten

könnten Sie bitte den HTTP-Körper auf unter relativen Pfad beginnt von bin-Verzeichnis

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

Jetzt zeigen payloadfile.txt kann den tatsächlichen Inhalt noch haben, wird es auch $ {ID} und weitere Variablen auswerten.

Wenn das hilft vergessen Sie nicht, klicken Sie auf beantwortet. Glücklich zu helfen, glücklich Testing

REFINE:

Ich habe Online-Tools verwendet:

zuerst die Daten in dem fisrt Ort zu sehen, ist ein richtiger ein https://jsonformatter.curiousconcept.com/

Ich sehe die

{ 
    "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" 
} 

I getrennt C-Programm allein

und angewandte Escape-Zeichen mit Online-Tool [angewandt Java Script Flucht]

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

Ausgang:

#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 } 

dies die, die ich verwenden, und es gültiges Json Dokument gezeigt. Wenn Sie keinen gültigen JSON-Dokumentserver senden, wird ein Fehler ausgegeben. Wählen Sie keine Codierung in HTTP-Sampler

+0

Vielen Dank für die Antwort. Ich habe Ihren Vorschlag ausprobiert, aber die Anfrage läuft trotzdem wie oben beschrieben falsch. Eine Sache, die ich beobachtet habe, ist \ n und printf/scanf ... verursachen dieses Problem. –

+0

Wenn Sie es aus einer Datei senden, warum können Sie das c-Programm in eine Datei parameterisieren und diese Datei verweisen, müssen Sie \ n und Escape-Zeichen dann nicht in Ihr c-Programm einfügen, jetzt sieht der Nutzlast-Teil "Quelle ":" $ {$ {__ FileToString (Pfad/zu/C-Programm.txt ,,)}} " –

+0

Wenn es hilft, nicht vergessen, klicken Sie Abstimmung und beantwortete –