Pages: 1 [2]   Go Down
Author Topic: Problème Ethernet Shield HTTP  (Read 3259 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pourtant je fais tout dans la même fonction, ma fonction de récupération HTTP actuelle est conçue selon le schéma suivant :

Code:
if (!client.connect()) return erreur;

client.println("GET /magepage?mesvariables HTTP/1.0");
client.println();

while (!client.available())
{
    delay(10);
    if (!client.connected() || test timeout)
    {
         client.stop();
         return erreur;
    }
}

while (client.connected())
{
    if (client.available()) client.read();
    else if (test timeout)
    {
        client.stop();
        return erreur;
    }
}

client.stop();
return ok;

Et oui pour l'instant le serveur est sur mon PC et l'arduino y accède depuis le réseau local.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Me revoici avec mes conclusions si ça peut aider quelqu'un...

J'ai repris la fonction pour faire l'attente de réponse et les lectures dans une seule boucle, comme suit :

Code:
while (client.connected())
{
    if (client.available())
    {
        //test si entetes déjà passées, si c'est le cas remplissage du tampon
    }

    if (timeout) erreur;
}
Apparemment cela règle le problème de dépassement lors de la réception.


Et il a fallu également pour résoudre le problème de GET anarchique remplacer :
Code:
client.println("GET ... HTTP/1.0");
client.println();
par :
Code:
client.print("GET ... HTTP/1.0\r\n\r\n");

Là en revanche je n'ai pas compris pourquoi puisque le println ne fait rien d'autre qu'ajouter "\r\n".


Voilà tout, merci et bonne soirée.
Logged

Pages: 1 [2]   Go Up
Jump to: