一种软件应用程序,使用超文本传输协议为来自客户端的请求提供服务。
当数据正确发送到 ESP32 时,ESP32 不会处理从 Web 应用程序以 JSON 形式发送的数据
你好吗? 我正在制作一个应用程序,其中 ESP32 用作网络服务器,目前我有一个网页来配置设备。 在这个页面中有一个 元素,一旦提交 你好吗?. 我正在制作一个应用程序,其中 ESP32 用作 Web 服务器,目前我有一个网页来配置设备。 在此页面中有一个<form>元素,一旦按下提交按钮,配置就会发送到ESP32,我知道数据已发送,因为我正在使用wireshark观看它,如下图所示 我知道ESP32正在接收POST请求,因为我在代码中有几个println语句,所以,处理请求的代码如下 server.on("/forma-dato", HTTP_POST, [](AsyncWebServerRequest *request) { if(!request->authenticate(usuarioHTTP, claveHTTP)) { return request->requestAuthentication(); }; request->send(200); Serial.println("Solicitud de carga de archivos enviada."); ultimaPaginaCargada = "/config.html"; }, manejaJson); 回调manejaJSON定义如下,摘自本页 void manejaJson(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) { Serial.println("Recibiendo configuración de la dirección IP ." + request->client()->remoteIP().toString() + " " + request->url()); if(!filename) { Serial.println("No hay archivo."); } if(!index) { request->_tempFile = SPIFFS.open("/" + filename, "w"); Serial.println("Carga Iniciada" + String(filename)); } if(len) { request->_tempFile.close(); Serial.println("Escribiendo archivo: " + String(filename) + ", tamaño: " + String(len)); } if(final) { request->_tempFile.close(); Serial.println("Carga completa: " + String(filename) + ", tamaño: " + String(index + filename)); request->redirect("/"); } } 正如你所看到的,有几个 println 句子可以知道程序在做什么,但是 manejaJson 回调中没有任何消息被打印,所以我认为 manejaJson 回调没有被执行,此外我没有任何返回值manejaJson 和 void 定义是因为与将其定义为 ArUploadHandlerFunction 相同,如在 AsyncWebServer 库的 .on 中声明的 WebServer.cpp 定义一样。 下面是从网页发送数据的代码 if(document.getElementById("forma") != null) { // Si encuentra la forma con la id igual a "forma", var elementoForma = document.getElementById("forma"); // extrae los valores completos. elementoForma.addEventListener("submit", function(e) { e.preventDefault(); var datosForma = {}; var formaDatos = new FormData(elementoForma); for(var [k,v] of formaDatos) { datosForma[k] = v; } console.log(datosForma); var datosJson = JSON.stringify(datosForma) console.log(datosJson); var config = new Blob([datosJson], {type: 'application/json'}); fetch("forma-dato", { method: "POST", body: config }); /*fs.writeFile('config.json', datosJson, 'utf-8', (err) => { if(err) { throw err; } console.log("Archivo guardado correctamente"); });*/ console.log(config); /*var envioForma = new XMLHttpRequest(); envioForma.open("POST", "forma-dato", true); envioForma.send(config);*/ }); } 正确知道数据是通过使用 fetch 方法发送的,但注释是另外两段发送数据的代码,一段使用 writefile,另一段使用 XMLHttpRequest,现在的 writefile 不太喜欢,因为在完全离线的应用程序中使用node.js。 那么,我能做些什么来解决这个问题并能够处理传入的数据。 预先感谢您的帮助。 注意:这个问题是我之前发表的this帖子的精确副本,但电子堆栈交换中的人们建议我在这里发表帖子,因为与软件比固件更相关。 为了让他们都知道,我能够使用在互联网上找到的代码解决问题,问题似乎是用于管理传入请求的 AsyncWebServer API 的默认方法不管理正文中包含 JSON 数据的请求默认情况下。 为了管理数据,必须使用 asyncjson.h 和 arduinojson.h,代码如下 AsyncCallbackJsonWebHandler* manejadorJson = new AsyncCallbackJsonWebHandler("/forma-dato", [](AsyncWebServerRequest *request, JsonVariant &docJson) { auto&& jsonObj = docJson.as<JsonObject>(); Serial.print("La fecha actual es :"); Serial.println((const char *) jsonObj["fecha"]); Serial.print("El horario del domingo en la tarde es: "); Serial.println((const char *) jsonObj["domingo-tarde-fin"]); request->send(200); Serial.println("Configuración recibida."); }); server.addHandler(manejadorJson); 当然所有的打印语句都是我写的,以便能够知道数据是否被处理过。 注意:在 AsyncWebServer API 的自述文件中是一个几乎类似于下面的示例,而不是使用该行 auto&& jsonObj = docJson.as<JsonObject>() 已使用 JsonObject& jsonObj = docJson.as<JsonObject>() 用上一行(只有一个 &)编写的示例对我来说不起作用,我查看了那里,显然这句话的问题是无法引用尚未初始化的变量。 JsonObject& jsonObj = docJson.as<JsonObject>() 错误:无法将“ArduinoJson::V704PB2::JsonObject&”类型的非常量左值引用绑定到“ArduinoJson::V704PB2::detail::enable_if::type”类型的右值(又名“ArduinoJson::V704PB2:”) :JsonObject'}
为什么当我尝试用手机访问 django 服务器时会收到服务器端 HTTP 400 错误?
我已经设置了一个简单的本地运行的 django 服务器,它提供了在服务器(当前是我的 MacBook Pro)上触发一些 bash 命令的按钮。这些命令的输出然后显示在...
点击 Angular 应用程序的 url 将显示 index.html 文件的 html 内容
每当我点击 Angular 应用程序的 URL 时,我都会看到 index.html 的 html 内容,而不是渲染的页面。可能是什么原因? 每当我点击 Angular 应用程序的 URL 时,我都会看到 index.html 的 html 内容,而不是渲染的页面。可能是什么原因? <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE10"> <!-- <meta http-equiv="X-UA-Compatible" content="IE=edge"> --> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>iTime</title> <base href="/ItimePreProd/ngiTime/"> <!-- <link rel="icon" type="image/x-icon" href="favicon.ico"> --> </head> <body> <app-root></app-root> <script src="runtime.js" defer></script><script src="polyfills-es5.js" nomodule defer></script><script src="polyfills.js" defer></script><script src="styles.js" defer></script><script src="scripts.js" defer></script><script src="vendor.js" defer></script><script src="main.js" defer></script></body> </html> 嗨,在谷歌上搜索了很多之后,我得到了解决方案,现在我的网址工作正常。 在 web-config 中添加重写规则后问题解决。
无法在 Spring Boot Test 1.5 中设置运行时本地服务器端口
我的应用程序使用 Spring Boot 1.5。在集成测试中,我想获取 Web 服务器的运行时端口号(注意:TestRestTemplate 在我的情况下没有用。)。有几个
我正在构建一个网络构建器。目前,用户可以创建一个静态页面并使用我们的子域来访问该页面,例如mysite.site.domain.com。 我有一个计划允许用户使用自己的域名...
安装了PHP Apache模块的Web服务器是否符合Web应用服务器的定义?
我的问题可能听起来很奇怪,因为我对Web、服务器和WAS(Web应用服务器)了解不多。然而出于安全考虑,是否是WAS已经变得很重要并且需要
安装了 PHP Apache 模块的 Web 服务器是否符合 WAS 的定义?
我的问题可能听起来很奇怪,因为我对网络、服务器和 WAS 不太了解。但出于安全考虑,是否是WAS就变得很重要,需要确认。 从我
我的本地网络上有多个设备,每个设备都运行一个网络服务器。该 Web 服务器仅显示用于与设备交互的 UI。可以有任意数量的可用并且可以使用它们
是否可以在同一 GCP 项目中的虚拟机实例之间交换公共 IP 地址?
我有一个 Google Cloud Platform 项目,其中的服务器运行一些 Web 平台和 API,为了将该服务器迁移到更现代的系统,我在同一个 GCP 项目中设置了一个新的 VM 实例,并且...
我想在 IIS 网站下托管 nextjs 应用程序作为子应用程序,按照下面的视频我可以将 nextjs 应用程序作为 IIS 中的网站运行 https://www.youtube.com/watch?v=HLsx0iraA-Y ...
带有 HTML 请求和 ESPAsyncWebServer 库的 ESP32
我想使用 ESPAsyncWebServer 库在 ESP32 上运行一个简单的 Web 服务器。在网页上,您应该能够选择要上传到 SD 卡的文件。您还应该能够从
有什么方法可以用来测试 Apache Web 服务器的语法错误吗? 我尝试使用以下命令重新启动 Apache Web 服务器 systemctl restart apache2 但我收到错误并且服务器没有重新启动...
我在处理充当 Web 服务器的 ESP 上的请求时遇到问题。 基本上这段代码: #include //使用这个库 ... webServer.on("/api/:userId/lights...
Web 服务器和 Web 服务器网关接口 (WSGI) 有什么区别?
我对 WSGI 和 Web 服务器感到困惑。我想要解释它们之间的差异,或者它们是否是同一件事。提前谢谢你。
启动Tomcat:文件名、目录名或卷标语法不正确。按 Enter 或 Esc 退出
使用 我已经将 Tomcat 8(忽略图片上的 10.1.7,一旦它与 Java 8 不兼容)作为 Windows 服务安装到我的计算机中,当我启动时,会创建一个新控制台,并显示消息:
给定 SSL 密钥和证书,如何创建 HTTPS 服务?
Next.js - 部署静态输出时没有 .html 扩展名的 404 错误
我的网站使用 Next.js 并使用 FileZilla 进行静态输出部署。 我可以在没有 .html 扩展名的情况下到达网站的根目录,如下所示: https://www.mywebsite.com 当我尝试...
我最近对 PHP 5.4 的内置网络服务器感到好奇。从表面上看,虽然相当准系统,但只要有足够的工作,就可以分发如下的 PHP 应用程序
我已从以下位置安装了 Tengine 网络服务器: http://tengine.taobao.org/ 我已经创建了一个 php 页面,但是 PHP 不执行,并且 PHP 显示在页面源代码中......
我正在使用 ESP232 开发套件,我正在尝试启动一个可以输入 WiFi 数据的接入点,然后用于设置 WiFi 网络服务器来控制数据。但每当我输入错误的 wifi 数据时,...