Problème requête HTTP avec module GSM pour recevoir un JSON

Bonjour,

dans le cadre d’un projet de géolocalisation dans lequel je me sers de deux modules, un GSM (https://www.arduino.cc/en/Guide/ArduinoGSMShield) et un GPS, j’ai besoin de récupérer via une requête HTTP un fichier JSON qui viendra d’une API qui à partir de la latitude et la longitude que je lui enverrai va envoyer tout un tas d’informations dans des fichiers JSON.

Pour cela, j’ai téléchargé la bibliothèque ArduinoJson et j’ai modifié un de leur exemple qui permet de recevoir un fichier JSON mais en ayant un module Ethernet pour que je puisse obtenir et parser ce fichier avec mon module GSM à la place. J’ai donc le code suivant :

/*
  Web client

 This sketch connects to a website through a GSM shield. Specifically,
 this example downloads the URL "http://www.arduino.cc/asciilogo.txt" and
 prints it to the Serial monitor.

 Circuit:
 * GSM shield attached to an Arduino
 * SIM card with a data plan

 created 8 Mar 2012
 by Tom Igoe

 http://www.arduino.cc/en/Tutorial/GSMExamplesWebClient

 */

// libraries
#include <GSM.h>

// PIN Number
#define PINNUMBER "0000"

// APN data
#define GPRS_APN       "mmsbouygtel.com" // replace your GPRS APN
#define GPRS_LOGIN     ""    // replace with your GPRS login
#define GPRS_PASSWORD  "" // replace with your GPRS password

// initialize the library instance
GSMClient client;
GPRS gprs;
GSM gsmAccess;

// URL, path & port (for example: arduino.cc)
char server[] = "arduino.cc";
char path[] = "/asciilogo.txt";
int port = 80; // port 80 is the default for HTTP

void setup()
{
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  Serial.println("Starting Arduino web client.");
  // connection state
  boolean notConnected = true;

  // After starting the modem with GSM.begin()
  // attach the shield to the GPRS network with the APN, login and password
  while (notConnected)
  {
    if ((gsmAccess.begin(PINNUMBER) == GSM_READY) &
        (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY))
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, port))
  {
    Serial.println("connected");
    // Make a HTTP request:
    client.print("GET ");
    client.print(path);
    client.println(" HTTP/1.1");
    client.print("Host: ");
    client.println(server);
    client.println("Connection: close");
    client.println();
  }
  else
  {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available
  // from the server, read them and print them:
  if (client.available())
  {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.available() && !client.connected())
  {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for (;;)
      ;
  }
}

Je me suis inspiré de l’exemple de la libraire GSM qui permet de faire une requête HTTP pour recevoir du texte pour modifier l’exemple de ArduinoJSON mais voilà ça ne marche pas. Systématiquement dans le moniteur série le programme s’arrête à l’affichage de : “Unexpected response le status est :”

Visiblement “status” est vide comme si rien n’avait été lu donc il est impossible de continuer néanmoins je ne sais pas ce qui provoque cela et c’est là que je bloque.

Si ça peut vous aider à me venir un aide et pour gagner du temps, voici l’exemple de GSM que j’ai utilisé (et qui marche pour moi) :

Et celui d’ArduinoJSON pour tester le parseur en faisant une requête HTTP via un module Ethernet :

Merci d’avance de votre aide qui sera forcément la bienvenue : j’ai déjà cherché un peu et je ne trouve pas…