connection depuis Arduino+Ethernet aux pages perso de free et autres

voici un pb concernant ceux qui veulent acceder a leur page perso Free ou autres...la partie Arduino est operationnelle, elle se connecte au serveur de pages perso de free via l'URL d'une page perso, qui contient juste un prog Test.php :
la connection se passe bien, c'est apres que j'ai un pb avec l'acces a ma page perso.

j'ai un prog de test qui tourne bien sur ma mega2560 et qui doit se connecter a une page perso free, qui contient juste un prog Test.php qui ne fait que echo "success";...la connection se passe bien (via une requete GET type client.print(F("GET /Test.php HTTP/1.1")); et j'arrive a declencher le prog sur la page perso d'un ami sans pb : des que je mets l'url de ma page perso (ma premiere page crée qd j'avais un compte acces libre) , je chope l'erreur 500 internal serveur error ! j'ai essayé une autre page perso, rattaché a un autre compte freebox only, idem ! j'ai donc crée une autre page depuis un compte en frebox total (revolution)) mais là j'attends l'activation pour essayer sur cette page car là je n'arrive pas a comprendre pourquoi je suis maudit a ce point : je precise que j'accede sans pb en ftp ou via explorer sur mes pages...

si quelqu'un a deja rencontré ce pb, ou a une quelconque idée pour me décoincer !
en passant une autre question : existe d'autre adresse IP ( genre free IPAddress serverID(212,27,63,129)) pour acceder a des serveurs de pages perso chez orange par ex, ou ailleurs ? je suis preneur ... merci

Bonjour Philou

Le problème vient de ta requête HTTP qui n'est pas assez complète.

En effet, les hébergement de page perso, ainsi que beaucoup d'hébergement pro low-cost, utilisent un serveur mutualisé. C'est à dire que le même serveur (== PC physique) va héberger plusieurs domaines Web. Donc il n'y a pas de relation unique (bijective dirions-nous) entre une adresse IP et un service Web.

Si tu regardais avait Wireshark (l'outil de base pour regarder ce qui se passe sur des comm IP) le dialogue entre un navigateur PC type firefox et ta page perso tu verrais qu'il y a une ligne INDISPENSABLE. Quelque chose du genre :

GET /monscript.php HTTP/1.0
Host: mapageperso.free.fr

C'est ce paramètre "Host:" qui indique au serveur Web quel est le bon domaine sur lequel la requête est placée parmi tous ceux gérés par ce serveur.
La ligne "Host: mapageperso.free.fr" doit être ajoutée tout de suite après le "GET" et avant la ligne vide qui indique la fin de la requête.

A+

merci mais la requete complete comprend bien le Host : elle est bien du type
"Get /Test.php HTTP/1.1" suivie par "Host : mapageperso.free.fr" suivie par un client.println()
ça marche tres bien sur le site d'un copain mais impossible de faire fonctionner sur mes pages perso a moi : rien a faire pour comprendre d'où vient la différence : les comptes sont actifs, les pages perso sont accessibles et sont soit vides, soit contiennent des sites mais le pb est à chaque fois : erreur 500 ... et semble etre du coté free.

j'ai essayé ce matin sur une vieille page perso que j'avais en reserve, et oh miracle sur celle ci ça fonctionne...mais ça n'explique pas pourquoi ça bugge sur les autres...c'est une page ouverte en acces libre vers 2005 de memoire, mais pas differente des autres...
j'attends l'activation par Free (3 jours deja !) de 2 autres pages perso pour faire un essai mais je suis pessimiste sur le resultat...

j'essaierais bien sur une age orange mais je n'ai pas le IP adress correspondant au serveur de pages perso d'Orange (si il est accessible d'ailleurs...)
ce pb n'est peut etre pas spécifiquement Arduino mais pour l'instant, il ne se passe que quand je fais une requete Get depuis un Arduino...
donc si quelqu'un a rencontré ce pb ou a une explication quelconque.... je frôle le nervous breakdown !

apres une journée d'essai infructueux, voici ma conclusion, en attendant mieux !

1/ j'aurais mieux fait de profiter du beau temps...
2/ il semble que seules les pages perso créees en acces libre marchent : 2 des pages qui marchent sont rattachées a des comptes acces libres, les autres (3 autres essayées) soit en freebox total, soit en freebox only me repondent invariablement "erreur 500" c'est quand même le comble d'avoir un abnt et de ne pouvoir l'utiliser avec l'arduino... ! donc je reformule la question initiale : quelqu'un a t-il reussi a faire un GET qui marche avec une page perso d'un compte freebox total (revolution) par ex ?
3/ j'ai posté un mail a l'assistance free sur ce point mais sans trop d'espoir...

bon, du coup je vais aller vraiment m'aerer l'esprit...A+

Comment as tu obtenu l'adresse IP ?

Il n'y a pas UNE adresse IP unique pour toutes les pages persos mais plusieurs serveurs. Il n'y a rien de surprenant à ce que les pages persos d'offres différentes soient sur des serveurs différents.
Free peut aussi décider de migrer ton compte d'un serveur à un autre quand ca lui chante du moment que le DNS est mis à jour.
J'ai 2 sites de pages perso et chacun est sur une adresse ip différente :

Le mieux est d'utiliser DBSClient::getHostByName() pour résoudre l'adresse IP

Peut être le fais-tu mais tu n'a publier aucun code, donc ca tiens du jonglage de te répondre.

ok merci ! c'est bien l'origine du pb, l'adresse IP n'etait pas la bonne... super B... vient de me donner la solution : pour les comptes acces libres, utiliser IPAddress serverID(212,27,63,129), et pour les comptes freebox (abonné free) IPAddress serverID(212,27,63,153)
mais apparemment, ça doit aussi dependre de la localisation geographique des pages perso...
le mieux est de pinger le site pour verifier l'adresse IP au préalable...tout bêtement !
j'essaye aussi la commande indiquée : DBSClient::getHostByName() pour blinder mon code, mais en gros c'est super, je suis enfin debloqué...
A+ P.

heu, au fait c'est quoi la syntaxe precise de cette commande DBSClient::getHostByName() ?
j'ai cherché un peu mais pas trouvé grand chose...
je suppose qu'il faut mettre l'url du site a trouver en argument quelque part...? et que ça renvoie une adr IP ?

En fait tu n'as même pas besoin de t'en servir
Si tu passe un nom de serveur à EthernetClient::connect() au lieu d' une adresse IP, il se débrouille tout seul

Cf l'exemple: arduino\libraries\Ethernet\examples\DnsWebClient

Ah, je pense voir le problème : les serveurs web doivent savoir quel nom de domaine adresser, car une grande partie de serveurs sont mutualisés, et donc partagent la même adresse IP.

Il faut donc absolument passer par le nom du site au lieu de son adresse.

En 1992, c'était l'inverse : on accédait aux 10 sites web par leur adresse IP, c'était le bon vieux temps...