ESP8266 не может прочитать параметры POST

Я работаю над простым сервером REST. Я сделал метод для обработки http://<esp8266_IP>/test. Метод GET работает как шарм, и я получил ответ. Затем я попытался отправить POST с данными JSON (я использовал PostMan), но ничего не могу прочитать.

При поиске в Интернете я прочитал, что библиотека ESP8266 не может анализировать JSON, и в этом случае я могу найти обычный текст в server.arg("plain"). Я пробовал, но безуспешно

Как прочитать данные в методе POST?

ESP8266WebServer server(80);
...

void handleTest()
{
    if (server.method() == HTTP_GET)
    {
        ...
    }
    else if (server.method() == HTTP_POST)
    {
        String message = "POST\nHeaders:\n";
        for (uint8_t i = 0; i < server.headers(); i++)
        {
            message += server.headerName(i) + ": " + server.header(i) + "\n";
        }
        message += "\nRequest params:\n";
        for (uint8_t i = 0; i < server.args(); i++){
            message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
        }
        server.send(202, "text/plain", message);
    }  
}
...
void setup()
{
    WiFi.begin(ssid, password);
    Serial.println("");

    // Ждем подключения
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

    if (MDNS.begin("esp8266")) {
        Serial.println(F("[Server] MDNS responder started"));
    }

    server.on("/test", handleTest);
}

, 👍0

Обсуждение

Пожалуйста, покажите свой код., @Mark Smith

я не уверен, что он может это сделать, кроме загрузки файлов..., @dandavis

@MarkSmith Я не думаю, что это будет полезно, кстати, я вставляю часть кода в свой вопрос., @Noisemaker


1 ответ


1

Вместо использования ниже в handleTest()

else if (server.method() == HTTP_POST)

попробуйте использовать ниже в setup()

server.on("/test", POST, handleTest);
,