Android java.net.UnknownHostException: el host no está resuelto

Este código no funciona:

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

todo el tiempo, lo que resulta en una excepción UnknownHostException, incluso cuando el host existe, se ha golpeado con éxito usando el mismo código si proviene de un host de desarrollo diferente (máquina) y también de un navegador.

Probablemente esté fuera de línea hacer 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 permitió comentar la respuesta insatisfactoria a esa pregunta (con el fin de solicitar más atención a la solución que finalmente encontré). Tal vez aún no soy lo suficientemente popular como para recibir ese privilegio. Mientras tanto, estoy volviendo a publicar la pregunta y una respuesta diferente.

Básicamente, acepto que tal vez el dispositivo Android tenga problemas con DNS bajo ciertas circunstancias, pero he intentado, por ejemplo, el ejemplo de anddev.org sobre cómo usar el analizador SAX, y funcionó en una máquina que tengo y no en otro.

Editar: Como se señaló, sé una respuesta que funciona y la publicaré.

Estoy a) haciendo una pregunta (que ya se ha formulado y sin éxito) yb) respondiéndola en beneficio de aquellos para quienes mi respuesta será útil.

La respuesta es endiabladamente simple: eliminar, luego volver a crear su AVD (dispositivo virtual / emulador) en Eclipse. Funcionó para mí, la primera vez.

He seguido los pasos anteriores pero sigo sin tener suerte, finalmente me di cuenta de que mi aplicación no permitía salir de Internet en el emulador. Así que solo agregue permisos de usuarios en su archivo de manifiesto. ¡Hecho! Gracias a jozsi, consulte 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

Lo he visto también en un teléfono (mientras realizaba la depuración de USB). La solución fue desactivar 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 descrito en este hilo.

para arreglarlo, no solo necesitaba tener el permiso regular de internet

  

Pero también necesitaba

  

Como una sugerencia para ver si su dispositivo puede necesitar lo mismo, intente navegar a la URL en el navegador de su teléfono para ver si necesita ayuda con la tarjeta SD o algo así.

Espero que ayude a otros.

Funciona para mí agregando permisos de usuario para Internet en el archivo AndroidMenifest.xml

  

En mi caso, el problema estaba en otro lado. Tuve que:

  • add

  • 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 toda la url del puerto proxy y el inicio de sesión / pase que desee.

Y

  • Llamar a mi operación de red en un hilo separado. La forma más fácil fue implementar un AsynchTask.

Encontré 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 llevar tiempo, realizar redes en el hilo principal, que es el mismo hilo que se encarga de actualizar la interfaz de usuario, congelaría el hilo hasta que se termine la red (esto es lo que sucede en cada hilo, pero cuando se realiza en un hilo dedicado, está bien). En Android, si el hilo de UI no está activo durante 5 segundos, mostrará que la aplicación no responde, ¿quieres cerrarlo? diálogo “.

Necesitas habilitar internet en tu emulador.

  • Emulador abierto

  • Presione el botón de menú y abra “configuración”

  • Abra “wireles y red”

  • Abra “Redes móviles”

  • Compruebe en “Habilitar datos”

Ahora prueba tu aplicación nuevamente.

No pude deshacerme del emulador “UnknownHostExceptions”, y el navegador del emulador tampoco pudo conectarse. Intenté todas las sugerencias que pude encontrar en el desbordamiento de stack y en todos lados.

Finalmente eliminé mi AVD, apagué Eclipse, y luego creé el AVD a través de la línea de comando. Luego lo lanzó a través de la línea de comando 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 persista. Pasé la mayor parte de una hora leyendo toda clase de soluciones posibles a este error. Solo para cualquiera que se encuentre con este hilo, resumiré brevemente aquí: -Verifique que el permiso de uso de Internet está en el manifiesto -Considerando la excepción (sin sentido) -Cambiando la configuración del cortafuegos en su SO -Compartir conexión (solo Windows) Y una carga de otras cosas

Mi arreglo tomó un poco más que el tuyo, pero no mucho. Después de leer tu publicación, cerré y destruí todos los emuladores. Entonces noté que cuando pasé por encima del botón de ejecución (círculo verde con flecha blanca) decía que el progtwig ya se estaba ejecutando, ¡aunque no existían AVD (emuladores)! De todos modos, reinicié el eclipse, creé un AVD y lo ejecuté y Bob era el hermano de mi padre. Nada que ver con mi código o configuración.

Encontré esto después. Bien puede lograr lo mismo pero no puedo responderlo 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 “borrar datos de usuario” en Configuraciones de ejecución, pestaña Destino.

Mi problema fue cuando compartí Internet desde la computadora a través de WIFI, luego de perder la conexión de ethernet y volver a conectarla no pude lograr la conexión en el teléfono. Esto se solucionó reiniciando el uso compartido de Internet en la computadora.

Espero que ayude a alguien.

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

Simplemente reinicio el AVD y agrego el Permiso de usuario, luego funciona.

problema resuelto

ejecutar cd C: \ Archivos de progtwig \ Android \ android-sdk \ tools

ejecutar la lista de android avd en cmd devuelve la lista de tu avila disponible … en mi caso es Myabc_avd

ejecutar emulator @Myabc_avd -dns-server 8.8.8.8 en cmd … avd mostrará avd ir al navegador de avd y escriba http://www.google.com mostrará la página de google. Ahora puedes acceder al navegador usando el nombre de host como myfrstapp.com

si todo va bien, puedes ejecutar tu proyecto usando eclipse, pero asegúrate de que se ejecute en avd, que se ejecuta desde cmd.

En mi caso acabo de reiniciar el emulador y funcionó.

Es tan simple. No es necesario reiniciar el eclipse O eliminar y crear Emulator, solo tiene que seguir los pasos que se detallan 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. Luego, en el panel derecho, abra la pestaña ” Destino
  7. Desplazarse hacia abajo
  8. Obtendrá una opción en la parte inferior llamada ” Argumentos adicionales de la línea de comandos del emulador
  9. Ponga ” -dns-server 8.8.8.8 ” estos valores ( sin comillas dobles ) en el cuadro de texto.

Eso es…

Encontré este problema cuando comencé el emulador mientras estaba conectado a una VPN. La desconexión de la VPN no tuvo efecto hasta que salí del emulador y reinicié. Es fácil probar si su emulador no está resolviendo nombres correctamente; solo vaya al navegador del emulador y escriba un nombre de host del sitio web.