Arduino et Proxy...

Bonsoir à tous !

J'ai une autre question qui tue pour vous... Comment connecter l'arduino à internet sachant que l'accès web se fait via un proxy ?

Merci d'avance pour les réponses !!

Jean-Baptiste

Bonjour,

Une requête HTTP "normal" ce fait ainsi :

GET /search?q=azerty HTTP/1.0
Host: www.google.com

en envoyant la requête directement à l'ip de google.com (dans cette exemple).

Avec un proxy c'est pas plus compliqué :

GET http://www.google.com/search?q=azerty HTTP/1.0
Host: www.google.com
Cache-control: no-cache

mais cette fois si la requête doit être envoyé à l'ip du proxy.

Ok donc en gros je dois mettre l'ip et le port du proxy à la place de celle du serveur, et dans host l'adresse ou l'ip de ma cible ?

La requête en elle même est pas trop changer, juste le GET (ou le POST) qui n'est plus un chemin relatif mais un chemin absolu avec le protocole (http://).

Normalement pour faire une requête HTTP il faut se connecter au serveur directement, avec le chemin absolu il suffit d'envoyer la requête au proxy qui va s'occuper de refaire la requête (avec le chemin relatif cette fois) auprés des serveurs du site "cible".

D'accord, mais donc l'adresse et le port du proxy je les mets où ?

merci encore à toi !

Quand tu veux te connecter à google par exemple tu crée un objet "Client" comme ça :

byte ipGoogle = {74, 125, 39, 103}; // Ip de google.fr
Client google(ipGoogle, 80);

void demandePage()
{
google.println("GET /search?q=azerty HTTP/1.0");
google.println("Host: www.google.com");
google.println();
google.println();
// Faire ici le nécessaire pour la lecture de la réponse
}

Maintenant si tu veux utiliser ton proxy tu change l'ip par celle du proxy

byte ipProxy = {192, 168, 1, 10}; // Ip de ton proxy
Client proxy(ipProxy, 8080); // Beaucoup de proxy tourne sur le port 8080

void demandePage()
{
proxy.println("GET http://www.google.com/search?q=azerty HTTP/1.0");
proxy.println("Host: www.google.com");
proxy.println("Cache-control: no-cache");
proxy.println();
proxy.println();
// Faire ici le nécessaire pour la lecture de la réponse
}

Ok super !!! Exactement ce que je voulais savoir !

Merci encore à toi !