私はArduino IDEでESP8266を使用しており、ポート200にサーバーを設定しています。 IPは192.168.1.100と同様に定義されています。server.args()ESP8266 Arduino
ESP8266WebServer server(200);
IPAddress ip(192, 168, 1, 100); //Node static IP
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
server.on("/parseIFTTT", parseIFTTT);
void parseIFTTT() {
String message;
message += server.args();
message += "\n";
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
Serial.println(message);
Serial.println(server.argName(0));
Serial.println(server.arg(0));
server.send(200, "text/plain", "Success " + message);
}
このparseIFTTT()メソッドにparseIFTTTリクエストルートするために行われます。
私はポート転送を行い、外部からこのサーバーにアクセスするためにduckdnsを使用しました。 これは私のduckdnsは、私はプレーンテキスト/としてコンテンツタイプとPOSTMANツールを使用してPOSTを行うと、身体の内容が
plain
--body contents--
しかしとしてシリアルモニターに示されている
http://xxxxxx.duckdns.org:200/parseIFTTT
に対処しています同じ要求がIFTTTから行われますが、シリアルモニタは何も表示されませんが空白です。最初はIFTTTの問題です。 しかしとして、それは私がIFTTTからのデータを参照してください。次のコード
String req = client.readString();
Serial.println(req);
client.flush();
を使用して、私はArduinoの中WiFiWebServerの例を使用するときのような問題ではありません。だから私は、私がやっていると信じて
POST /parseIFTTT HTTP/1.1
Content-type: text/plain
host: xxxxxx.duckdns.org:200
content-length: 27
x-newrelic-id: XAMGV15QGwQJVllRDgQ=
x-newrelic-transaction: PxQFA1NbAQQJVwJWA1dSB0YdUFIOFQZOEgEPVA5ZBFYGXAwECFgFAFcUG0MHUwoLBAcDAxVs
Connection: close
{"value":"test data from IFTTT"}
server.args()に何か問題があります。私は、server.args()は、contentTypeがtext/plainかx-www-form-urlencodedかどうかPOSTで使用される本文の内容を与えるべきであるという印象を受けています。
私は何か間違っているか、server.args()でPOSTリクエストからボディデータを取得できませんか?