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\");nelsenprintf(\"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 изменяет запрос (удаляя несколько форматов, таких как ‘S) и отправляет на сервер, а сервер отвечает плохим ответом на запрос.

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

Если вы отправляете выше запрос без параметризации (введите значения), то он работает нормально.

Пожалуйста, дайте мне знать, как решить эту проблему.

1 ответ

  1. Я предполагаю, что это запрос POST HTTP, и в разделе тела есть эти данные

    не могли бы вы указать тело 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"
    }
    

    I separated out C program alone

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

    и примененные escape-символы с помощью онлайн-инструмента [applied java script escape]

    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