Requête HTTP avec un shield GPRS

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut à tous !

Pour un projet de terminale sur une ruche intelligente, nous avons besoin de transmettre des données de la ruche à un serveur qui va ensuite traiter les informations.

Nous devons utiliser le shield GPRS v1.2 de Seeed Studio mis à disposition par le lycée. Voici notre problème : comment peut-on faire une requête HTTP POST avec ce shield ?

En fait, sur le wiki du fabricant, il propose un code mais uniquement pour faire une requête GET. Il nous faudrait alors pouvoir faire une requête complète avec nos arguments. Nous avons essayé le code suivant mais il ne fonctionne pas.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <SoftwareSerial.h>
#include <String.h>

String pwd = "0000",
       host = "ruchepi.pythonanywhere.com";
SoftwareSerial GSM(7, 8);

void setup() {
  GSM.begin(19200); 
  Serial.begin(19200);
  delay(500);

  GSM.println("AT+CPIN=\"" + pwd + "\"");
  delay(1000);
  ShowSerialData();

  GSM.println("AT+CIPMUX=0");
  GSM.println("AT+CIPMODE=0");
  GSM.println("AT+CIPSHUT");
}

void loop() {
  GSM.println("AT+CIPSTART=TCP," + host + ",80");
  delay(10000); ShowSerialData();
  GSM.println("AT+CIPSEND");
  GSM.print("POST /api/ruches/1 HTTP/1.1\r\n");
  GSM.println("Host: " + host + "\r\n");
  GSM.print("Connection: close\r\n\r\n"); 
  delay(10000); ShowSerialData();
  GSM.println("AT+CIPCLOSE");
  GSM.println("AT+CIPSHUT");
  delay(10000); ShowSerialData();
}

void ShowSerialData() {
  while(GSM.available() != 0)
    Serial.write(GSM.read());
}

Le shield ne nous renvoie pas d'erreurs précises. Savez-vous pourquoi ce code ne fonctionne pas ? Quelqu'un a-t-il déjà essayé de faire une telle requête ?

Merci d'avance et bonne journée. :-)

+0 -0

Avez vous essayez le morceau de code présent sur cette page ci?

http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0#A_Simple_Source_Code_Examples

L'exemple est un envoie put, ce qui est très ressemblant à un post puisqu'il comporte une section data.

Pour ce qui est du debuggage, dispose tu d'un analyseur de reseau ou de tout autre moyen de récupérer la requête? Le principe serait de lire la requête post envoyé pour en lire l'URL est le data. A ce moment là tu pourra manuellement t'assurer d'où vient l'erreur (serveur ou client/carte)

Édité par Sanoc

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source…

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte