Stworzyłem aplikację, która ładuje pytanie z moich usług internetowych i działa dobrze. Ale czasami się zawiesza i nie rozumiem powodu, dla którego tak się dzieje, zwłaszcza że nadałem mu również wymagane uprawnienia. Działa dobrze, ale losowo ulega awarii i daje mi ten raport.
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)
Odpowiedzi:
Napotkałem również ten problem, ponowne podłączenie Wi-Fi może rozwiązać ten problem.
Dla nas możemy sprawdzić, czy telefon może rozwiązać hosta na IP, gdy uruchamiamy aplikację. Jeśli nie można rozwiązać problemu, powiedz użytkownikowi, aby sprawdził WiFi, a następnie zamknij.
Mam nadzieję, że to pomoże.
źródło
Jeśli ponowne połączenie Wi-Fi nie działa, spróbuj ponownie uruchomić urządzenie.
To działa dla mnie. Mam nadzieję, że to pomoże.
źródło
Miałem ten sam wyjątek w symulatorze (Android Studio na OSX), ale połączenie z tym samym adresem URL w symulatorze iOS działało dobrze ... Wygląda na to, że wszystko wynikało z faktu, że uruchomiłem symulator, będąc połączonym z osobistym hotspotem dla mojego połączenia internetowego, a następnie wróciłem później, gdy byłem podłączony do Wi-Fi, a symulatorowi z jakiegoś powodu nie podobało się nowe połączenie internetowe, wydaje się, że myślał, że stary hotspot był bieżącym połączeniem, które już nie działało.
Zamykanie i ponowne uruchamianie symulatora działało!
źródło
Otrzymałem ten sam błąd, a problem polegał na tym, że korzystałem z VPN i nie zdawałem sobie z tego sprawy. Po odłączeniu się od VPN i ponownym połączeniu z moją siecią WIFI problem został rozwiązany.
źródło
Nie udało się skonfigurować tagu w pliku manifestu
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
źródło
Napotkałem ten błąd podczas uruchamiania aplikacji na Androida na moim domowym Wi-Fi, a następnie próbowałem uruchomić ją na innym WiFi bez zamykania mojego symulatora.
Po prostu zamknięcie symulatora i ponowne uruchomienie aplikacji zadziałało!
źródło
Miałem ten problem na Androidzie 10,
Zmieniono
targetSdkVersion 29
natargetSdkVersion 28
problem rozwiązany. Nie wiem, jaki jest rzeczywisty problem.Myślę, że nie jest to dobra praktyka, ale zadziałała.
przed:
compileSdkVersion 29
minSdkVersion 14
targetSdkVersion 29
Teraz:
compileSdkVersion 29
minSdkVersion 14
targetSdkVersion 28
źródło
Testowałem swoją aplikację na emulatorze Androida i rozwiązałem ten problem wyłączając i włączając Wi-Fi na urządzeniu z emulatorem Androida! Działało doskonale.
źródło
Miałem ten sam problem, ale z Glide. Kiedy miałem się rozłączyć z Wi-Fi i połączyć ponownie (tak jak to sugerowano tutaj), zauważyłem, że jestem w trybie samolotowym 🤦♂️
źródło
Miałem ten sam problem. java.net.UnknownHostException: nie można rozpoznać hosta „” ...
Używam programu Visual Studio 2019 i Xamarin.
Przełączałem się z powrotem na Wi-Fi, ale byłem w gorącym miejscu.
Rozwiązałem to, przesuwając czysty emulator. Przywróć ustawienia fabryczne. Następnie ponownie uruchom aplikację Visual Studio Xamarin, która ponownie wdroży Twoją aplikację do nowego emulatora.
Zadziałało. Myślałem, że będę walczył przez wiele dni, aby to rozwiązać. Na szczęście ten post wskazał mi właściwy kierunek.
Nie mogłem zrozumieć, jak to działało doskonale wcześniej, a potem przestało działać bez zmiany kodu.
To jest mój kod w celach informacyjnych:
using var response = await httpClient.GetAsync(sb.ToString()); string apiResponse = await response.Content.ReadAsStringAsync();
źródło
Miałem ten sam problem, ale z małą różnicą. Dodałem NetworkConnectionCallback, aby sprawdzić sytuację, w której połączenie internetowe uległo zmianie w czasie wykonywania, i sprawdzić w ten sposób przed wysłaniem wszystkich żądań:
private fun isConnected(): Boolean { val activeNetwork = cManager.activeNetworkInfo return activeNetwork != null && activeNetwork.isConnected }
Może występować stan taki jak ŁĄCZENIE (widać, że po włączeniu Wi-Fi ikona zaczyna migać, po podłączeniu do sieci obraz jest statyczny). Mamy więc dwa różne stany: jeden CONNECT inny CONNECTING, a gdy Retrofit próbował wysłać żądanie, połączenie internetowe jest wyłączone i wyrzuca UnknownHostException. Zapomniałem dodać inny typ wyjątku w funkcji, który był odpowiedzialny za wysyłanie żądań.
try{ //for example, retrofit call } catch (e: Exception) { is UnknownHostException -> "Unknown host!" is ConnectException -> "No internet!" else -> "Unknown exception!" }
To tylko trudny moment, który można powiązać z tym problemem.
Mam nadzieję, że komuś pomogę)
źródło