gpt4 book ai didi

c - ESP8266 Arduino 请求内容编码

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:15 25 4
gpt4 key购买 nike

我正在尝试使用 ESP8266 将 JSON 发送到 Arduino 模块。我有一个简单的网络服务器,它在设备必须连接的地方等待带有 SSID 和密码的 JSON。

ESP8266WebServer server(80);
server.on("/config", HTTP_POST, configHandle);
server.begin();

void handleConfig() {
String payload = server.arg("plain");
//convert JSON to char[]
//parse using jsmn lib
}

如果密码包含非 ASCII 字符怎么办?我如何处理请求内容以将此参数放入方法:

WiFi.begin(ssid, pass);

编辑:

示例:如果我像这样发送 JSON:

{"pass": "test+test"}

然后,当我打印此负载时,我没有得到 + 符号(但这是 ASCII 符号)

请求(wireshark):

enter image description here

来自开发板的字符数组负载:

enter image description here

最佳答案

ESP8266WebServer 库正在将 + 解码为空格字符。

在发送之前,您需要对 JSON 字符串进行 URL 编码。

在 vanilla JavaScript 中你需要使用 encodeURIComponent .
不要使用 encodeURI ,因为它不编码 +.
无论您使用什么,请确保将 + 字符编码为 %2b

这也将使您避免潜在的问题,涉及 JSON 中的 ?&=

关于c - ESP8266 Arduino 请求内容编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41148167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com