0

ESP8266 を使用して JSON を Arduino モジュールに送信しようとしています。デバイスが接続する必要があるSSIDとパスワードを含むJSONを待機する単純なWebサーバーがあります。

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):

ここに画像の説明を入力

ボードからの Char 配列ペイロード:

ここに画像の説明を入力

4

1 に答える 1

2

ESP8266WebServerライブラリは+スペース文字にデコードしています。

送信する前に、JSON 文字列を URL エンコードする必要があります。

バニラ JavaScript では、 を使用する必要がありますencodeURIComponent。をエンコードしないため、
使用しないでください。 使用するものは何でも、文字が にエンコードされていることを確認してください。encodeURI+
+%2b

これにより、JSON?に関連する潜在的な問題からも解放されます。&=

于 2016-12-14T18:49:42.697 に答える