Requête HTTP - Bad request

Bonjour,

Merci d’avance pour l’aide que vous pourrez m’apporter.

Je souhaite envoyer des données sur un serveur via une requête HTTP qui fonctionne sur un navigateur WEB.

J’utilise un shield GSM/GPRS 2 Arduino pour effectuer mes requêtes.

Quand je fais ma requête j’obtiens une réponse : Bad request.

Voici le lien de la réponse :

Voici le code :

*
  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 "0710"

// 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(true);

// 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 native USB port 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, true, true) == GSM_READY) &
        (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) {
      notConnected = false;
    } else {
      Serial.println("Not connected");
      delay(1000);
    }
  }

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

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

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 (;;)
      ;
  }
}
[/code)

Le client.println(); après http/1.1 est de trop

Bonjour,

Merci beaucoup de votre aide. En effet, sans cette ligne, la requête fonctionne parfaitement.

Cependant, je ne comprends pas pourquoi les requêtes prennent autant de temps. L'envoie de la requête, le temps de traitement du serveur, et la réception de la réponse prend environ 5 secondes alors que si je teste directement sur un mobile en edge, l'envoie, le traitement et la réception prend environ 1 seconde.

Merci !