java.net.UnknownHostException: No se puede resolver el host "<url>": No hay dirección asociada con el nombre de host y Fin de la entrada en el carácter 0 de

84

Creé una aplicación que carga una pregunta de mis servicios web y funciona bien. Pero, a veces se bloquea y no entiendo la razón por la que esto está sucediendo, especialmente porque también le he dado los permisos necesarios. Funciona bien, pero al azar, se bloquea y me da este informe.

private void sendContinentQuestions(int id) {
    // TODO Auto-generated method stub

    //Get the data (see above)
    JSONArray json = getJSONfromURL(id);
        try{
            for(int i=0; i < json.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                JSONObject jObject = json.getJSONObject(i);
                longitude":"72.5660200"
                String category_id = jObject.getString("category_id");
                String question_id = jObject.getString("question_id");
                String question_name = jObject.getString("question_name");
                String latitude = jObject.getString("latitude");
                String longitude = jObject.getString("longitude");
                String answer = jObject.getString("answer");
                String ansLatLng = latitude+"|"+longitude ; 
                Log.v("## data:: ###",question_id+"--"+question_name+"-cat id-"+category_id+"--ansLatLng "+ansLatLng+" answer: "+answer);

                all_question.add(new QuestionData(game_id,category_id,question_id,question_name,ansLatLng,answer));
            }
        }catch(JSONException e)        {
            Log.e("log_tag", "Error parsing data "+e.toString());
        }
    }


}
 public JSONArray getJSONfromURL(int id){

    String response = "";
    URL url;
    try {
        url = new URL(Consts.GET_URL+"index.php/Api/getQuestion?cat_id="+id);
        HttpURLConnection http = (HttpURLConnection) url.openConnection();
        http.setRequestMethod("POST");
        InputStream is = http.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        response = br.readLine();
        Log.v("###Response :: ###",response);
        http.disconnect();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }catch (ProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace(); 
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
    //try parse the string to a JSON object
    JSONArray jArray = null;
    try{

        jArray = new JSONArray(response);

    }catch(JSONException e){
        Log.e("log_tag", "Error parsing data "+e.toString());
    }

    return jArray;
}

11-13 15:02:52.307: W/System.err(8012): java.net.UnknownHostException: Unable to resolve host "www.xyz.com": No address associated with hostname
11-13 15:02:52.317: W/System.err(8012):     at java.net.InetAddress.lookupHostByName(InetAddress.java:424)
11-13 15:02:52.317: W/System.err(8012):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
11-13 15:02:52.317: W/System.err(8012):     at java.net.InetAddress.getAllByName(InetAddress.java:214)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
11-13 15:02:52.327: W/System.err(8012):     at com.abc.xyz.ContinentActivity.getJSONfromURL(ContinentActivity.java:400)
11-13 15:02:52.327: W/System.err(8012):     at com.abc.xyz.ContinentActivity.sendContinentQuestions(ContinentActivity.java:327)
11-13 15:02:52.327: W/System.err(8012):     at com.abc.xyz.ContinentActivity.access$2(ContinentActivity.java:323)
11-13 15:02:52.327: W/System.err(8012):     at com.abc.xyz.ContinentActivity$LoadQuestions.doInBackground(ContinentActivity.java:254)
11-13 15:02:52.327: W/System.err(8012):     at com.abc.xyz.ContinentActivity$LoadQuestions.doInBackground(ContinentActivity.java:1)
11-13 15:02:52.327: W/System.err(8012):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
11-13 15:02:52.327: W/System.err(8012):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
11-13 15:02:52.327: W/System.err(8012):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-13 15:02:52.327: W/System.err(8012):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
11-13 15:02:52.337: W/System.err(8012):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
11-13 15:02:52.337: W/System.err(8012):     at java.lang.Thread.run(Thread.java:841)
11-13 15:02:52.337: W/System.err(8012): Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
11-13 15:02:52.337: W/System.err(8012):     at libcore.io.Posix.getaddrinfo(Native Method)
11-13 15:02:52.337: W/System.err(8012):     at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:61)
11-13 15:02:52.337: W/System.err(8012):     at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
11-13 15:02:52.337: W/System.err(8012):     ... 24 more
11-13 15:02:52.337: E/log_tag(8012): Error parsing data org.json.JSONException: End of input at character 0 of 
11-13 15:02:52.337: W/dalvikvm(8012): threadid=194: thread exiting with uncaught exception (group=0x417c1700)
11-13 15:02:52.337: E/AndroidRuntime(8012): FATAL EXCEPTION: AsyncTask #5
11-13 15:02:52.337: E/AndroidRuntime(8012): java.lang.RuntimeException: An error occured while executing doInBackground()
11-13 15:02:52.337: E/AndroidRuntime(8012):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.lang.Thread.run(Thread.java:841)
11-13 15:02:52.337: E/AndroidRuntime(8012): Caused by: java.lang.NullPointerException
11-13 15:02:52.337: E/AndroidRuntime(8012):     at com.abc.xyz.ContinentActivity.sendContinentQuestions(ContinentActivity.java:328)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at com.abc.xyz.ContinentActivity.access$2(ContinentActivity.java:323)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at com.abc.xyz.ContinentActivity$LoadQuestions.doInBackground(ContinentActivity.java:254)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at com.abc.xyz.ContinentActivity$LoadQuestions.doInBackground(ContinentActivity.java:1)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
Reshma
fuente
15
¿Estás conectado a Internet?
Apoorv
¿Obtiene la respuesta impresa en su registro?
GrIsHu
Sí, he comprobado la conexión a Internet.
Reshma
1
Compruebe si el teléfono puede acceder a esta URL (en el navegador, por ejemplo)
No intente con el simulador, he tenido el mismo problema. Y he pasado 1 día tratando de resolverlo. Finalmente, mi solución fue usar un dispositivo Android real para realizar pruebas.
JPerk

Respuestas:

224

También encontré este problema, volver a conectar el WiFi puede resolverlo.

Para nosotros, podemos verificar si el teléfono puede resolver el host a IP cuando iniciamos la aplicación. Si no puede resolverse, dígale al usuario que verifique el WiFi y luego salga.

Espero que ayude.

RxRead
fuente
¡MUCHAS GRACIAS! No pude entender por qué podía conectarme a la dirección pero no acceder a ella a través de mi aplicación.
Error de
¡Tuve que apagar mi teléfono!
Francisco Corrales Morales
Pasé mucho tiempo tratando de averiguar por qué mi aplicación ya no funcionaba ... De todas las cosas que podría haber sido, esta fue. ¡¡Gracias!!
thomaspsk
4
¿Sigue existiendo este problema en Android 7? Puedo encontrar este comportamiento al azar en la aplicación abierta. La conexión de red está disponible para la aplicación, pero conecta el acceso a los servicios web. ¿Qué podría causar esto? Varios dispositivos de la red tienen el mismo problema.
X-HuMan
¿Puede haber alguna forma de alertar o brindar por el usuario porque los programadores pueden entender el problema pero el usuario no lo hará? No vendrá a stackoverflow, simplemente desinstalará la aplicación.
DragonFire
20

Si volver a conectar el WiFi no funciona para usted, intente reiniciar su dispositivo.

Esto funciona para mi. Espero eso ayude.

Jiyeh
fuente
16

Tuve la misma excepción en el simulador (Android Studio en OSX) pero la conexión a la misma URL en el simulador de iOS funcionó bien ... Parece que todo se debió al hecho de que estaría ejecutando el simulador mientras estaba conectado a un punto de acceso personal para mi conexión a Internet y luego regresó más tarde mientras estaba conectado a wifi y al simulador no le gustó la nueva conexión a Internet por alguna razón, parece que pensó que el antiguo punto de acceso era la conexión actual, que ya no funcionaba

¡Cerrar y relanzar el simulador funcionó!

CMash
fuente
9

Recibí el mismo error y el problema era que estaba en una VPN y no me di cuenta. Después de desconectarme de la VPN y volver a conectarme a mi red WIFI, se resolvió el problema.

obedecer
fuente
5

Falta configurar la etiqueta en el archivo de manifiesto

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Ajay Takur
fuente
4

Encontré este error al ejecutar mi aplicación de Android en el WiFi de mi hogar, luego intenté ejecutarlo en un WiFi diferente sin cerrar mi simulador.

¡Simplemente cerrar el simulador y volver a iniciar la aplicación funcionó para mí!

A. Sullivan
fuente
2

Tuve este problema en Android 10,

Cambiado targetSdkVersion 29a targetSdkVersion 28problema resuelto. No estoy seguro de cuál es el problema real.

No creo que sea una buena práctica, pero funcionó.

antes de:

compileSdkVersion 29

minSdkVersion 14

targetSdkVersion 29

Ahora:

compileSdkVersion 29

minSdkVersion 14

targetSdkVersion 28

Vettiyanakan
fuente
1

¡Estaba probando mi aplicación con el emulador de Android y resolví esto apagando y encendiendo el Wi-Fi en el dispositivo emulador de Android! Funcionó perfectamente.

Hernán Daniel Piña Landinez
fuente
Hice lo mismo, solo con datos móviles.
Primož Ivančič
1

Tenía el mismo problema, pero con Glide. Cuando me iba a desconectar del wifi y volver a conectarme (como se sugirió aquí), noté que estaba en modo Avión 🤦‍♂️

Gabriel Guedes
fuente
0

Yo tuve el mismo problema. java.net.UnknownHostException: No se puede resolver el host "" ...

Estoy ejecutando Visual Studio 2019 y Xamarin.

También cambié a mi WiFi pero estaba en un punto caliente.

Resolví esto deslizando limpio el emulador. Restaurar la configuración de fábrica. Luego, vuelva a ejecutar la aplicación visual studio xamarin, que volverá a implementar su aplicación en el emulador nuevo.

Funcionó. Pensé que iba a luchar durante días para resolver esto. Afortunadamente, esta publicación me indicó la dirección correcta.

No podía entender cómo funcionaba perfectamente antes y luego me detuve sin cambiar el código.

Este es mi código de referencia:

using var response = await httpClient.GetAsync(sb.ToString());
string apiResponse = await response.Content.ReadAsStringAsync();
Ashandra Singh
fuente
0

Tuve el mismo problema, pero con una pequeña diferencia. Agregué NetworkConnectionCallback para verificar la situación cuando la conexión a Internet había cambiado en tiempo de ejecución, y verificando así antes de enviar todas las solicitudes:

private fun isConnected(): Boolean {
    val activeNetwork = cManager.activeNetworkInfo
    return activeNetwork != null && activeNetwork.isConnected
}

Puede haber un estado como CONECTANDO (puede ver si cuando enciende el wifi, el icono comienza a parpadear, después de conectarse a la red, la imagen es estática). Entonces, tenemos dos estados diferentes: uno CONNECT, otro CONNECTING, y cuando Retrofit intentó enviar una solicitud, la conexión a Internet está deshabilitada y arroja UnknownHostException. Olvidé agregar otro tipo de excepción en la función que era responsable de enviar solicitudes.

try{
//for example, retrofit call
}
catch (e: Exception) {
        is UnknownHostException -> "Unknown host!"
        is ConnectException -> "No internet!"
        else -> "Unknown exception!"
    }

Es solo un momento complicado que puede estar relacionado con este problema.

Espero ayudar a alguien)

Boris Veriga
fuente