J'essaye d'envoyer JSON à un module Arduino avec un ESP8266. J'ai un serveur web simple, qui attend JSON avec SSID et mot de passe où le périphérique doit se connecter.ESP8266 Demande de codage de contenu Arduino
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
}
Que se passe-t-il si le mot de passe contient des caractères non ASCII? Comment puis-je gérer le contenu demande de mettre cette arguments à la méthode:
WiFi.begin(ssid, pass);
Edit:
Exemple: Si j'envoie JSON comme:
{"pass": "test+test"}
Puis, lorsque j'imprime cette charge utile Je n'obtiens pas de signe +
(mais il s'agit d'un signe ASCII)
Demande (wireshark):
Char charge utile de tableau de bord:
JSON est envoyé dans la méthode POST de charge utile de requête. Donc, je devrais vraiment encoder ce contenu en utilisant la méthode d'encodage URI? Pourquoi la bibliothèque change + en caractère d'espace, et comment empêcher cette solution? – kris14an
[Les données POST doivent également être codées] (https://en.wikipedia.org/wiki/POST_ (HTTP) #Use_for_submitting_web_forms) –
ok, lors de l'encodage de ce json, fonctionne bien, mais est une méthode pour lire ces données du client flux de connexion en utilisant des octets originaux? – kris14an