[RESOLU] Shield ethernet -> Envoie de requête

Salut,

j’ai un petit problème avec le shield ethernet : j’essaie de me connecter à mon hebergeur et d’envoyer une requête.

Mon script PHP est :

<?php
if (isset($_GET['a']))
{
	mysql_connect('sql.free.fr', 'kouaaks', '******');
	mysql_select_db('kouaaks'); 
	
	mysql_query("INSERT INTO arduino VALUES ('', '1')");
}
?>

et mon script arduino est :

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };

char serverName[] = "www.kouaaks.free.fr";

EthernetClient client;

void setup()
{
  Serial.begin(9600);
   while (!Serial) {;}

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    while(true);
  }
  delay(1000);
  Serial.println("connecting...");
  
  if (client.connect(serverName, 80)) {
    Serial.println("connected");
    client.println("GET /index.php?a=lol HTTP/1.0");
    client.println();
  } 
  else
  {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available())
  {
    char c = client.read();
    Serial.print(c);
  }
  
  if (!client.connected())
  {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    
    while(true);
  }
}

Ensuite, quand je vais dans le serial, j’ai ceci comme message :

connecting...
connected

disconnecting.

Mais … rien ne s’ajoute dans ma bdd.

Auriez-vous une petite idée ? Je débute dans ce domaine ( shield ethernet ) …
Merci :stuck_out_tongue:

bonjour,
as tu testé à la mano ton script php?

histoire de voir s’il fonctionne et fait bien la requete, tu peux ca

<?php if (isset($_GET['a'])) { mysql_connect('sql.free.fr', 'kouaaks', '******'); mysql_select_db('kouaaks'); $requete = "INSERT INTO arduino VALUES ('', '1')"; echo $requete;exit(); $enregistrement = mysql_query($requete) or die(mysql_error()); } ?>

Salut, oui bien sûr ma requête fonctionne bien, je l'ai testée à la main.

je pense que c'est ca qui bloque, vu que tu as repris le code de démo webclient

char serverName = "www.kouaaks.free.fr";

essaye de mettre l'ip

et dans le Get le sous domaine
client.println("GET kouaaks/index.php?a=lol HTTP/1.0");

Essaie avec la version 1.1 pour HTTP.

Il faut rajouter deux chose dans ta requète :

IPAddress server(192,168,1,64);

...

  if (client.connect(server, 80)) {
    Serial.println("connected");

     // Make a HTTP request:
      client.println("GET /le/chemin/du/fichier HTTP/1.1");
      client.print("Host: turlututu chapeau pointu\n"); 
      client.print("Referer: turlututu chapeau pointu\n\n"); 
      client.println();
}

...

Effectivement, mes WWW n’était pas bon, et il manquait des balises d’entêtes.

Voilà le code fonctionnel :

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };

char serverName[] = "kouaaks.free.fr";

EthernetClient client;

void setup()
{
  Serial.begin(9600);
   while (!Serial) {;}

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    while(true);
  }
  delay(1000);
  Serial.println("connecting...");
  
  if (client.connect(serverName, 80)) {
    Serial.println("connected");
    client.print("GET /index.php?a=lol");
    client.println(" HTTP/1.1");
    client.println("Host: kouaaks.free.fr");
    client.println("User-Agent: AVR ethernet");
    client.println("Accept: text/html");
    client.println("Keep-Alive: 300");
    client.println("Connection: keep-alive");
    client.println();
  } 
  else
  {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available())
  {
    char c = client.read();
    Serial.print(c);
  }
  
  if (!client.connected())
  {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    
    while(true);
  }
}

Merci :wink:

impec.
pense a mettre en résolu ton 1er post :wink: