WifiESPライブラリ(https://github.com/bportaluri/WiFiEsp)を使用してRESTful POSTリクエストを作成しようとしています。私はcurlでリクエストを成功させることができましたが、ArduinoとESPを使って一貫してエラーが発生します。私は問題がライブラリが必要とするPOST要求の手動フォーマットに関係していると思われますが、間違ったことはありません。ここに私の消毒コード:WifiESPライブラリを使用したarduinoでのPOSTリクエスト
Connected to server
[WiFiEsp] Data packet send error (2)
[WiFiEsp] Failed to write to socket 3
[WiFiEsp] Disconnecting 3
私の成功したカールの要求は次のようになります:
if (client.connect(server, 80)) {
Serial.println("Connected to server");
// Make a HTTP request
String content = "{'JSON_key': 2.5}"; // some arbitrary JSON
client.println("POST /some/uri HTTP/1.1");
client.println("Host: http://things.ubidots.com");
client.println("Accept: */*");
client.println("Content-Length: " + sizeof(content));
client.println("Content-Type: application/json");
client.println();
client.println(content);
}
私が取得エラー(シリアルモニター経由で)これです、いくつかの実験をした後
curl -X POST -H "Content-Type: application/json" -d 'Some JSON' http://things.ubidots.com/some/uri
カップルのもの。 'println'関数を使うとき、ライブラリは' \ n'の代わりに '\ r'と' \ n'の両方を追加することに気付きました。 '\ n'を手作業で行い、' print'関数を使ってください。そうでない場合は、シリアル全体に印刷し、カールポストのwiresharkトレースと比較してください。 – leetibbett
@leetibbett応答に感謝します。 '\ r \ n'は問題ではなくなってしまったが、私はいくつかの他の問題を見つけるのに役立つHTTPプロトコル文書を見てくれた。 –