2010-09-09 13 views
15

Ich versuche, Informationen zu einer API in einem Webprojekt, das ich erstellt und gehostet habe, zu veröffentlichen. Ich bin nicht sicher, wie das genaue Format für die HTTP-POST-Anforderung ist. Jedes Mal, wenn ich versuche, bekomme ich HTTP 400 Fehler mit der Nachricht, dass es "ein ungültiges Verb" gibt.Eine http POST-Anfrage mit Arduino machen

Beispielcode:

byte server[] = {"our IP"} 
.. 
.. 

client(server, 80) 
.. 
.. 
client.println("POST /Api/AddParking/3"); 

Es verbindet sich mit der IP-Adresse ohne Probleme geliefert, aber alles, was ich wieder in der oben genannten HTTP-Fehlercode 400. Ich bin nicht sicher, ob ich sollte ein einschließen HTTP-Version nach meinem POST oder und Content-Length oder andere Informationen.

Antwort

2

Das Senden von handgefertigten HTTP-Paketen kann ein wenig kompliziert sein, da sie sehr wählerisch sind, was das verwendete Format betrifft. Ich empfehle dringend, durch die HTTP protocol zu lesen, wenn Sie die Zeit haben, weil es die Syntax und die erforderlichen Felder erklärt. Insbesondere sollten Sie sich Abschnitt 5 "Request" ansehen.

In Bezug auf Ihren Code müssen Sie die HTTP-Version nach dem POST-URI angeben und ich glaube, dass Sie auch den Header "Host" angeben müssen. Darüber hinaus müssen Sie sicherstellen, dass am Ende jeder Zeile ein Wagenrücklauf-Zeilenvorschub (CRLF) vorhanden ist. So sollte Ihr Paket so etwas wie aussehen:

POST /Api/AddParking/3 HTTP/1.1 
Host: www.yourhost.com 
27

Die ursprüngliche Frage ist bereits beantwortet, aber nur als Referenz für die Menschen vorbei an Google; Hier finden Sie ein vollständigeres Beispiel zum Bereitstellen von Daten auf einem Webserver mit einem Arduino:

IPAddress server(10,0,0,138); 
String PostData = "someDataToPost"; 

if (client.connect(server, 80)) { 
    client.println("POST /Api/AddParking/3 HTTP/1.1"); 
    client.println("Host: 10.0.0.138"); 
    client.println("User-Agent: Arduino/1.0"); 
    client.println("Connection: close"); 
    client.print("Content-Length: "); 
    client.println(PostData.length()); 
    client.println(); 
    client.println(PostData); 
} 
+2

client.println (PostData.length()); * fehlt 't' * – F481

Verwandte Themen