Ich versuche, RESTful POST-Anfrage mithilfe der WifiESP-Bibliothek (https://github.com/bportaluri/WiFiEsp) zu machen. Ich bin in der Lage, die Anfrage mit curl erfolgreich zu machen, aber immer einen Fehler mit dem Arduino und ESP bekommen. Ich vermute, das Problem hängt mit der manuellen Formatierung der POST-Anfrage zusammen, die die Bibliothek benötigt, aber ich sehe nichts falsch. Hier ist mein hygienisiert Code:POST-Anfrage auf arduino mit ESP8266 mit WifiESP-Bibliothek
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);
}
Der Fehler I (über serielle Monitor) erhalten ist dies:
Connected to server
[WiFiEsp] Data packet send error (2)
[WiFiEsp] Failed to write to socket 3
[WiFiEsp] Disconnecting 3
Meine erfolgreiche curl Anfragen sieht wie folgt aus:
curl -X POST -H "Content-Type: application/json" -d 'Some JSON' http://things.ubidots.com/some/uri
Paar Dinge. Mir ist aufgefallen, dass die Bibliothek sowohl '\ r' als auch' \ n' anhängt, anstatt nur '\ n', wenn Sie die Funktion' println' verwenden. Versuchen Sie die '\ n's manuell und verwenden Sie' print' Funktion. Wenn das nicht klappt, drucken Sie das Ganze auf Serial und vergleichen Sie es mit einer Wireshark-Spur Ihres Curl-Posts. – leetibbett
@leetibett Danke für die Antwort. '\ r \ n \ 'war schließlich kein Problem, aber es brachte mich dazu, die Dokumentation des HTTP-Protokolls zu betrachten, was mir half, mehrere andere Probleme zu finden. –