El nombre de host localhost
(junto con la dirección de bucle invertido 127.0.0.1) es algo especial. Es como la palabra “yo”. Si digo “yo”, me refiero a una persona diferente a la tuya cuando dices “yo”, a pesar de que usamos la misma palabra.
Supongamos que tiene un servidor web ejecutándose en su máquina de desarrollo. Si usa el navegador en esa misma máquina, entonces la dirección “yo” de localhost
tiene sentido. El miembro de su equipo en una computadora diferente no puede usar localhost
y conectarse a su servidor web.
Un dispositivo Android que ejecuta una aplicación que realiza acceso remoto no es diferente. Al probar su aplicación, es probable que desee conectar el dispositivo a su red de desarrollo a través de wi-fi. Ahora su dispositivo puede conectarse a su máquina de desarrollo, pero necesitará una dirección.
- Cómo evitar que mi aplicación de Android sea pirateada como un archivo APK
- ¿Puede un desarrollador de aplicaciones, diseñar y desarrollar una aplicación como Virtual City (pero con gráficos más livianos) en cuestión de 2 o 3 días?
- ¿Cómo aprendió Mustafa Bhatkar la programación de Android?
- ¿Quién gana 100 $ o más por día con las aplicaciones de Android?
- ¿Por qué no solo usar fragmentos en el desarrollo de Android?
Debe determinar el nombre de host y la dirección de su máquina de desarrollo, luego usar esa información en su aplicación para conectarse. Dado que su aplicación probablemente estará hablando con un servidor de producción, probablemente necesitará un código de “solo desarrollo” para cambiar a su servidor de prueba. [Por cierto, si alguien tiene un buen método para tratar con varios servidores, me encantaría escucharlo.] Espero que tenga una persona de tipo administrador del sistema que pueda ayudarlo si lo necesita.
Cuando comencé a desarrollar, usé la emulación, y me tomó un tiempo descubrir que localhost no es la dirección del sistema operativo host, lo que quieres es la dirección del sistema operativo host. Tenga en cuenta que esa dirección varía entre los emuladores.
Si está utilizando el emulador basado en QEMU que se incluye con el SDK, la dirección del sistema operativo del host es 10.0.2.2. Consulte esta página web para obtener más detalles: Uso del emulador.
Si está utilizando el excelente emulador de Android Genymotion que se basa en VirtualBox (y si no lo está, debería hacerlo porque destruye el emulador de valores) la dirección del sistema operativo host es 10.0.3.2.
De hecho, tengo un código de solo desarrollo que verifica el fabricante del dispositivo y establece la dirección del servidor remoto de manera diferente dependiendo de qué dispositivo o emulador se detecte.
Si está ejecutando un servidor web en el host del emulador, asegúrese de que su firewall esté configurado para acceder, ya que el emulador parece una máquina externa al firewall.
También puede usar adb para probar la conectividad desde su dispositivo: adb shell ping
Espero que sea útil.
PS Preste atención a los consejos de Miguel y prefiera HttpURLConnection
a AndroidHttpClient
.