ESP32异步Web服务器POST方法不工作

ESP32异步Web服务器POST方法不工作,post,esp32,Post,Esp32,我很难让POST方法与ESP32&异步Web服务器一起工作。准确地说,邮政路线是可识别的,但对尸体的处理失败 ESP32是WROOM-32。后文示例改编自 web服务器和ESP32似乎以我尝试过的其他方式工作。虽然我下面的示例没有显示它,但是GET方法工作得很好。当我试图处理POST请求的主体时,问题就出现了。我在代码中添加了一条注释“这里的代码不是执行的”,以显示什么不起作用。显示简单表单/testform.html,但提交后,POST处理程序的标题部分显示内容类型为application/x

我很难让POST方法与ESP32&异步Web服务器一起工作。准确地说,邮政路线是可识别的,但对尸体的处理失败

ESP32是WROOM-32。后文示例改编自

web服务器和ESP32似乎以我尝试过的其他方式工作。虽然我下面的示例没有显示它,但是GET方法工作得很好。当我试图处理POST请求的主体时,问题就出现了。我在代码中添加了一条注释“这里的代码不是执行的”,以显示什么不起作用。显示简单表单/testform.html,但提交后,POST处理程序的标题部分显示内容类型为application/x-www-form-urlencoded,但不会将任何内容返回到Chrome浏览器,并且不会执行用于显示POST正文的打印语句

ESP32代码如下所示,我正在使用Arduino IDE:

包括WiFi.h 包括ESPAsyncWebServer.h 包括SPIFFS.h 常量字符*ssid=xxxxxx;//实际SSID和Pw已删除 常量字符*密码=xxxxxx; 异步web服务器server80; 无效设置{ 从15200年开始; WiFi.beginssid,密码; 当WiFi.status!=WL\U已连接时{ 延迟1000; Serial.println连接到WiFi。。; } //初始化SPIFFS 如果!SPIFFS.begintrue{ Serial.PrintLn安装SPIFF时发生错误; 回来 } Serial.printlnWiFi.localIP; server.on/testform.html,HTTP_-GET,[]AsyncWebServerRequest*请求{ request->sendSPIFFS,/testform.html,字符串,false; }; 服务器.on /我的处理表格页面, HTTP:, []AsyncWebServerRequest*请求{ //以下打印语句有效+删除它们没有任何区别 //这将显示在监视器内容类型::application/x-www-form-urlencoded上 Serial.printContent类型:; Serial.printlrequest->contentType; },//路由处理功能 无效的 []AsyncWebServerRequest*请求,uint8\u t*数据,大小长度,大小索引,大小总计{ //***此处的代码未执行*** 对于尺寸i=0;i发送200; }; //启动服务器 server.begin; } void notFoundAsyncWebServerRequest*请求{ 请求->发送404,文本/普通,未找到我的*****; } 空穴环`{ } testform.htm网页非常简单,在浏览器请求时会按预期显示

测试表 姓名: 发送您的消息 我希望有人能找到明显的boo-boo,或者给我一个我下一步可能尝试的线索。

下面的代码很有效

server.on(
    "/post",
    HTTP_POST,
    [](AsyncWebServerRequest * request){
        // The following print statements work + removing them makes no difference
        // This is displayed on monitor "Content type::application/x-www-form-urlencoded"
        Serial.print("Content type::");
        Serial.println(request->contentType());
        Serial.println("OFF hit.");
    String message;
    int params = request->params();
    Serial.printf("%d params sent in\n", params);
    for (int i = 0; i < params; i++)
    {
        AsyncWebParameter *p = request->getParam(i);
        if (p->isFile())
        {
            Serial.printf("_FILE[%s]: %s, size: %u", p->name().c_str(), p->value().c_str(), p->size());
        }
        else if (p->isPost())
        {
            Serial.printf("%s: %s \n", p->name().c_str(), p->value().c_str());
        }
        else
        {
            Serial.printf("_GET[%s]: %s", p->name().c_str(), p->value().c_str());
        }
    }
    
    });

我用Postman做了更多的研究和测试,当内容类型为application/x-www-form-urlencoded时,body方法似乎没有被调用,这是从我的简单html表单调用时的情况。在这种情况下,问题变成了如何访问此内容类型的正文数据?是否可以编辑您的帖子,使所有代码都在一个代码块中?是否可以在您的帖子中包含有关问题和解决方案的一些解释?简单的代码转储不是一个很好的答案。