Cyril Mottier

“It’s the little details that are vital. Little things make big things happen.” – John Wooden

Accéder à Son Serveur Localhost

Comme vous devez l'avoir compris, Android est une plateforme orientée sur la mobilité. Pour ce faire, elle dispose de nombreuses API facilitant les échanges réseau et aidant à la gestion des différents type de données reçus à l'aide des différentes interfaces disponibles (Internet, SMS, MMS, etc.).

Cette faculté confère à Android une méthodologie de développement assez particulière et offre des possibilités intéressantes. Il devient en effet facile de créer des applications disposant de deux parties distinctes : la partie serveur (PHP, J2EE, etc.) et la partie cliente (en Java sur Android). Dans ces cas le développement de l'application Android se déroule généralement en deux phases : l'écriture d'un serveur et celle du client.

Alors que la première phase se passe très bien, les programmeurs sont souvent confrontés à un problème lors de la réalisation de la seconde : l'accès au serveur applicatif. En effet, bien souvent, les développeurs utilisent un serveur local (appelé localhost et disponible à l'adresse 127.0.0.1). Cette adresse facilement accessible par un navigateur sur la machine de développement n'est “bizarrement” pas atteignable lorsqu'on tente de l'atteindre depuis l'émulateur.

Pourquoi une telle impossibilité? Replaçons nous tout simplement dans le contexte de l'émulateur fourni avec le SDK Android. Ce dernier est en fait un système Linux émulé par QEmu (un émulateur s'occupe en fait de simplement traduire les instructions ARM - type des instructions de l'image système fournie avec le SDK - en instructions compréhensibles par votre système de développement - généralement Intel 8086). Le problème vient tout simplement de cette particularité qui fait que l'émulateur Android fait tourner un second système qui dispose de sa propre adresse locale (localhost).

Cette situation explique pourquoi il est impossible d'atteindre son localhost de développement. Taper 127.0.0.1 sur le browser Android revient en fait à chercher un serveur local à l'émulateur (qui est normalement absent). Vous allez alors me demander pourquoi les autres adresses fonctionnent … et bien cela vient du fait que l'émulateur créé un pont entre votre connexion Internet et lui-même vous laissant croire que tout est possible :)…

Heureusement, Google a, comme à son habitude, pensé à tout : il existe une adresse IP “magique” qui permet de contourner ce problème de double localhost : la 10.0.2.2. Lorsque vous accéderez à 10.0.2.2 depuis l'émulateur, vous accéderez en fait à votre adresse de boucle locale (la localhost de votre machine de développement). Le problème est donc surmonté et il ne reste maintenant devant vous que des possibilités illimitées. A vous de jouer !