Ich habe eine App erstellt, die eine Frage aus meinen Webdiensten lädt und die einwandfrei funktioniert. Aber manchmal stürzt es ab und ich verstehe nicht, warum dies geschieht, insbesondere weil ich ihm auch die erforderlichen Berechtigungen erteilt habe. Es funktioniert gut, aber zufällig stürzt es ab und gibt mir diesen Bericht.
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)
Antworten:
Ich bin auch auf dieses Problem gestoßen. Durch erneutes Verbinden des WLAN kann dies behoben werden.
Für uns können wir prüfen, ob das Telefon den Host beim Starten der Anwendung in IP auflösen kann. Wenn es nicht behoben werden kann, weisen Sie den Benutzer an, das WLAN zu überprüfen und dann zu beenden.
Ich hoffe, es hilft.
quelle
Wenn das erneute Verbinden des WLAN für Sie nicht funktioniert, starten Sie Ihr Gerät neu.
Das funktioniert bei mir. Ich hoffe es hilft.
quelle
Ich hatte die gleiche Ausnahme im Simulator (Android Studio unter OSX), aber die Verbindung zu derselben URL im iOS-Simulator funktionierte einwandfrei ... Es scheint, dass alles auf die Tatsache zurückzuführen ist, dass ich den Simulator ausführen würde, während ich mit einem persönlichen Hotspot verbunden bin für meine Internetverbindung und kam dann später zurück, während ich mit WLAN verbunden war und der Simulator die neue Internetverbindung aus irgendeinem Grund nicht mochte, scheint es, als ob der alte Hotspot die aktuelle Verbindung war, die nicht mehr funktionierte.
Das Schließen und Neustarten des Simulators hat funktioniert!
quelle
Ich habe den gleichen Fehler erhalten und das Problem war, dass ich auf VPN war und es nicht realisiert habe. Nach dem Trennen der Verbindung zum VPN und dem erneuten Herstellen der Verbindung zu meinem WIFI-Netzwerk wurde das Problem behoben.
quelle
Fehler beim Konfigurieren des Tags in der Manifestdatei
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
quelle
Ich habe diesen Fehler festgestellt, als ich meine Android-App auf meinem Heim-WLAN ausgeführt habe und dann versucht habe, sie auf einem anderen WLAN auszuführen, ohne meinen Simulator zu schließen.
Das einfache Schließen des Simulators und das Neustarten der App hat bei mir funktioniert!
quelle
Ich hatte dieses Problem auf Android 10,
Geändert,
targetSdkVersion 29
um dastargetSdkVersion 28
Problem zu beheben. Ich bin mir nicht sicher, was das eigentliche Problem ist.Ich denke keine gute Praxis, aber es hat funktioniert.
Vor:
compileSdkVersion 29
minSdkVersion 14
targetSdkVersion 29
Jetzt:
compileSdkVersion 29
minSdkVersion 14
targetSdkVersion 28
quelle
Ich habe meine Anwendung mit dem Android-Emulator getestet und dieses Problem gelöst, indem ich das WLAN auf dem Android-Emulator-Gerät aus- und wieder eingeschaltet habe! Es hat perfekt funktioniert.
quelle
Ich hatte das gleiche Problem, aber mit Glide. Als ich mich vom WLAN trennen und die Verbindung wieder herstellen wollte (genau wie hier vorgeschlagen), bemerkte ich, dass ich mich im Flugzeugmodus befand 🤦♂🤦
quelle
Ich hatte das gleiche Problem. java.net.UnknownHostException: Host kann nicht aufgelöst werden "" ...
Ich verwende Visual Studio 2019 und Xamarin.
Ich wechselte auch wieder zu meinem WiFi, war aber an einem Hot Spot.
Ich habe das gelöst, indem ich den Emulator sauber gewischt habe. Auf Werkseinstellungen zurücksetzen. Führen Sie anschließend die Visual Studio Xamarin-App erneut aus, um Ihre App erneut auf dem neuen Emulator bereitzustellen.
Es funktionierte. Ich dachte, ich würde tagelang kämpfen, um das zu lösen. Zum Glück hat mich dieser Beitrag in die richtige Richtung gelenkt.
Ich konnte vorher nicht verstehen, wie es perfekt funktionierte und hörte dann ohne Codeänderung auf.
Dies ist mein Referenzcode:
using var response = await httpClient.GetAsync(sb.ToString()); string apiResponse = await response.Content.ReadAsStringAsync();
quelle
Ich hatte das gleiche Problem, aber mit kleinen Unterschieden. Ich hatte NetworkConnectionCallback hinzugefügt, um die Situation zu überprüfen, in der sich die Internetverbindung zur Laufzeit geändert hatte, und dies vor dem Senden aller Anforderungen zu überprüfen:
private fun isConnected(): Boolean { val activeNetwork = cManager.activeNetworkInfo return activeNetwork != null && activeNetwork.isConnected }
Es kann Zustände wie VERBINDEN geben (Sie können sehen, wenn Sie WLAN einschalten, das Symbol beginnt zu blinken, nach dem Herstellen einer Verbindung zum Netzwerk ist das Bild statisch). Wir haben also zwei verschiedene Zustände: einen VERBINDEN einen anderen VERBINDEN, und wenn Retrofit versucht hat, eine Anfrage zu senden, ist die Internetverbindung deaktiviert und es wird eine UnknownHostException ausgelöst. Ich habe vergessen, eine andere Art von Ausnahme in die Funktion aufzunehmen, die für das Senden von Anforderungen verantwortlich war.
try{ //for example, retrofit call } catch (e: Exception) { is UnknownHostException -> "Unknown host!" is ConnectException -> "No internet!" else -> "Unknown exception!" }
Es ist nur ein kniffliger Moment, der mit diesem Problem zusammenhängen kann.
Hoffe, ich werde jemandem helfen)
quelle