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)
Respuestas:
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.
fuente
Si volver a conectar el WiFi no funciona para usted, intente reiniciar su dispositivo.
Esto funciona para mi. Espero eso ayude.
fuente
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ó!
fuente
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.
fuente
Falta configurar la etiqueta en el archivo de manifiesto
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
fuente
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í!
fuente
Tuve este problema en Android 10,
Cambiado
targetSdkVersion 29
atargetSdkVersion 28
problema 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
fuente
¡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.
fuente
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 🤦♂️
fuente
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();
fuente
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)
fuente