Android java.net.UnknownHostException: Host no resuelto

Este código no funciona:

URL url = new URL( xmlPath ); InputSource input = new InputSource( url.openStream() ); 

Todo el tiempo, resultando en una excepción UnknownHostException, incluso cuando el host existe, se ha golpeado correctamente utilizando el mismo código si desde un host de desarrollo diferente (máquina) y también desde un navegador.

Estoy probablemente fuera de línea haciendo esta pregunta de nuevo, una repetición de Android java.net.UnknownHostException: Host no está resuelto (pregunta de estrategia) . El software del foro no me permitiría comentar sobre la respuesta insatisfactoria a esa pregunta (con el fin de solicitar más atención a la solución que encontré en última instancia). Tal vez no soy lo suficientemente popular como para recibir ese privilegio. Mientras tanto, estoy esencialmente re-publicando la pregunta y una respuesta diferente.

Básicamente, acepto que tal vez el dispositivo Android tiene un tiempo difícil con DNS en determinadas circunstancias, pero he intentado, por ejemplo, el ejemplo anddev.org de cómo utilizar el analizador SAX, y funcionó en una máquina que tengo y no en otro.

Editar: Como se ha señalado, conozco una respuesta de trabajo y la publicaré.

Estoy a) haciendo una pregunta (que ya se ha pedido y contestado sin éxito) yb) respondiendo para el beneficio de aquellos para quienes mi respuesta será útil.

La respuesta es diabólicamente simple: eliminar, a continuación, volver a crear su AVD (dispositivo virtual / emulador) en Eclipse. Funcionó para mí – primera vez.

He estado siguiendo los pasos anteriores, pero todavía no intento ninguna suerte, finalmente me doy cuenta de mi aplicación no permitió ir fuera de Internet en el emulador. Así que simplemente agregue los permisos de los usuarios en su archivo de manifiesto. ¡Hecho! Gracias a jozsi ver http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device

  1. Android.permission.INTERNET
  2. Android.permission.ACCESS_NETWORK_STATE
  3. Android.permission.READ_PHONE_STATE

He visto esto en un teléfono también (mientras que hace la depuración del USB). La solución fue deshabilitar WiFi y volver a habilitarlo.

En mi caso estaba descargando un archivo XML de una URL en mi teléfono, pero estaba teniendo el problema describir en este hilo.

Para la fijación, no sólo necesitaba tener el permiso regular de Internet

 <uses-permission android:name="android.permission.INTERNET" /> 

Pero también necesitaba

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Como sugerencia para ver si su dispositivo puede necesitar la misma cosa, intente navegar a la URL en el navegador de su teléfono para ver si pregunta acerca de la necesidad de tarjeta SD o algo.

Espero que ayude a otros.

Funciona para mí al agregar el permiso del usuario para Internet en el archivo AndroidMenifest.xml

 <uses-permission android:name="android.permission.INTERNET"/> 

La solución está aquí Necesitas habilitar Internet en tu emulador nada más.

  • Emulador abierto

  • Presione el botón del menú y abra "ajustes".

  • Abierto "wireles y red".

  • Abierto "Redes Móviles".

  • Marque en "Datos habilitar"

¡¡Hecho!! Ahora, pruebe su aplicación de nuevo.

¡Aclamaciones!

En mi caso el problema estaba en otra parte. Tenía que:

  • Add <uses-permission android:name="android.permission.INTERNET" />

  • Configurar un servidor proxy en mi emulador: Emulator > settings > wireless and network > Mobile Networks > Access Point Name > "the access point you have ;)" . Aquí puede configurar todos los url de puerto proxy y login / pass que desee.

Y

  • Llame a mi operación de red en un hilo separado. La manera más fácil era implementar un AsynchTask.

He encontrado la solución aquí:

HTTP no funciona en el emulador de Android

"Esta excepción está ahí por una razón.La actividad de red puede tomar tiempo, la realización de redes en el hilo principal, que es el mismo hilo que responsable de la actualización de la interfaz de usuario, congelaría el hilo hasta que la red se hace (esto es lo que sucede en cada , Pero cuando se realiza en un hilo dedicado, está bien) En Android, si el subproceso de la interfaz de usuario no está activo durante 5 segundos, mostrará que la aplicación no responde, ¿Desea cerrarlo?

No podía deshacerse del emulador "UnknownHostExceptions" – y el navegador del emulador no obtendría una conexión tampoco. Probamos todas las sugerencias que podría encontrar en el desbordamiento de la pila y en cualquier otro lugar.

Finalmente eliminé mi AVD, cerré Eclipse, y luego creé el AVD a través de la línea de comandos. A continuación, lo lanzó a través de línea de comandos con el -dns-server 8.8.8.8. (En mi Mac: ./emulator -avd Google-8 -dns-server 8.8.8.8) ¡Finalmente funcionó!

Espero que esto ayude a alguien más.

Muchas gracias Russ. Me alegra que hayas persistido. Había pasado la mejor parte de una hora leyendo todo tipo de posibles soluciones a este error. Sólo para cualquier otro tropezar a través de este hilo, voy a resumir brevemente aquí: -Comprobar Internet utiliza el permiso está en el manifiesto -Contar la excepción (sin sentido) -Cambiar la configuración del cortafuegos en su sistema operativo -Compartir conexión (sólo Windows) Y una carga de otras cosas

Mi arreglo tomó un poco más que el tuyo, pero no mucho. Después de leer su mensaje, cerré y destruí todos los emuladores. Entonces noté que cuando moused encima del botón de la corrida (círculo verde con la flecha blanca) dijo que el programa estaba funcionando ya, aunque no existían AVDs (emuladores)! De todos modos, reinició eclipse, creó un AVD y lo dirigió y Bob era hermano de mi padre. Nada que ver con mi código o configuración en absoluto.

Encontré esto después. Puede muy bien lograr lo mismo, pero no puedo responder por ello a menos que el problema vuelva a ocurrir. http://www.jiahaoliuliu.com/2011/02/stopping-android-applications-already.html Otro truco que / puede / lograr el mismo resultado es marcar "limpiar datos de usuario" en la configuración de ejecución, ficha de destino.

Mi problema era cuando compartiendo el Internet del ordenador vía WIFI, después que la conexión de Ethernet fue perdida y reconectada no podría alcanzar la conexión en el teléfono. Esto se corrigió reiniciando el uso compartido de Internet en el equipo.

Espero que ayude a alguien.

En mi caso estaba utilizando el nombre de host basado URL con HttpURLConnection. Sin embargo, utilizando una URL basada en IP, resolvió el problema. También eliminé / recreé el AVD pero eso no ayudó.

Acabo de reiniciar el AVD y agregar el permiso de usuario, entonces funciona.

<uses-permission android:name="android.permission.INTERNET" />

problema resuelto

Ejecutar cd C: \ Archivos de programa \ Android \ android-sdk \ tools

Ejecutar android lista avd en cmd devuelve lista de ur availabe avd …. en mi caso su Myabc_avd

Run emulator @Myabc_avd -dns-server 8.8.8.8 en cmd … avd mostrará avd ir al navegador de avd y tipo http://www.google.com mostrará la página de google. U ahora puede acceder al navegador usando el nombre de host como myfrstapp.com

Si todo va bien, entonces u puede ejecutar ur proyecto utilizando eclipse, pero asegúrese de que se ejecuta en avd que se ejecuta desde cmd.

En mi caso recién he reiniciado el emulador y funcionó.

Es tan simple. No hay necesidad de reiniciar eclipse O eliminar y crear Emulador, sólo tiene que seguir los pasos que se indican a continuación:

  1. Haga clic derecho en su proyecto
  2. Haga clic en " Ejecutar como "
  3. Haga clic en " Ejecutar configuración "
  4. La ventana se abrirá
  5. En el panel izquierdo, seleccione la configuración de ejecución del proyecto
  6. A continuación, en el panel derecho, abra la pestaña " Destino "
  7. Desplácese hacia abajo
  8. Obtendrá una opción en la parte inferior llamada " Argumentos adicionales de la línea de comandos del emulador "
  9. Coloque " -dns-server 8.8.8.8 " estos valores ( sin comillas dobles ) en el cuadro de texto.

Eso es…

Encontré este problema cuando empecé el emulador mientras que estaba conectado a una VPN. Salir de la VPN no tuvo ningún efecto hasta que dejé el emulador y reiniciado. Es fácil probar si su emulador no está resolviendo correctamente los nombres – simplemente vaya al navegador del emulador y escriba un nombre de host del sitio web.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.