Go Down

Topic: [RESOLU] Shield ethernet -> Envoie de requête (Read 554 times) previous topic - next topic

Kouaaks

Feb 03, 2013, 05:14 pm Last Edit: Feb 04, 2013, 07:23 am by Jean-François Reason: 1
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 :

Code: [Select]
<?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 :

Code: [Select]
#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 :
Code: [Select]

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 :-P

infobarquee

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

histoire de voir s'il fonctionne et fait bien la requete, tu peux ca
Quote
<?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());
}
?>

Kouaaks

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

infobarquee

je pense que c'est ca qui bloque, vu que tu as repris le code de démo webclient
Quote
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");

Jean-François

#4
Feb 03, 2013, 07:02 pm Last Edit: Feb 03, 2013, 07:06 pm by Jean-François Reason: 1
Essaie avec la version 1.1 pour HTTP.

http://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP_1.1

Il faut rajouter deux chose dans ta requète :

Code: [Select]

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

...
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Kouaaks

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

Voilà le code fonctionnel :

Code: [Select]
#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 ;-)

infobarquee

impec.
pense a mettre en résolu ton 1er post ;)

Go Up