Faire une requête http POST en utilisant Arduino

j'essaie de poster des informations à une API sur un projet web que j'ai créé et hébergé. Je ne suis pas sûr du format exact de la requête HTTP POST. Chaque fois que J'essaie, J'obtiens des erreurs HTTP 400 avec le message qu'il y a "un verbe invalide".

Exemple De Code:

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

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

il se connecte à L'adresse IP fournie sans aucun problème, mais tout ce que j'obtiens de nouveau dans le code D'erreur HTTP 400 mentionné ci-dessus. Je ne suis pas sûr si j'étais censé inclure une version HTTP après mon POST ou et contenu-longueur ou toute autre information.

17
demandé sur sachleen 2010-09-09 18:12:40

2 réponses

la question originale est déjà répondue, mais juste à titre de référence pour les personnes passant par Google; voici un exemple plus complet Comment poster des données sur un serveur Web avec un 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);
}
30
répondu stif 2013-10-13 03:01:44

envoyer des paquets HTTP faits à la main peut être un peu délicat parce qu'ils sont extrêmement difficiles sur le format utilisé. Je recommande fortement la lecture par le biais de l' protocole HTTP si vous avez le temps, car il explique la syntaxe et les champs requis. En particulier, vous devriez consulter la section 5 "Demande".

en ce qui concerne votre code, vous devez spécifier la version HTTP après L'URI POST et je crois que vous devez également spécifier l'en-tête "Host". Sur le dessus de ce que vous besoin d'être sûr d'avoir une ligne chariot-retour-alimentation (CRLF) à la fin de chaque ligne. Donc, votre paquet devrait ressembler à quelque chose comme:

POST /Api/AddParking/3 HTTP/1.1
Host: www.yourhost.com
2
répondu Dean Pucsek 2010-09-12 17:01:50