Я создал приложение, которое загружает вопрос из моих веб-служб, и оно отлично работает. Но иногда он дает сбой, и я не понимаю, почему это происходит, особенно потому, что я также дал ему необходимые разрешения. Он работает нормально, но случайно вылетает и дает мне этот отчет.
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)
Ответы:
Я тоже столкнулся с этой проблемой, повторное подключение Wi-Fi может решить эту проблему.
Что касается нас, мы можем проверить, может ли телефон разрешить хост в IP при запуске приложения. Если это не удается, попросите пользователя проверить Wi-Fi, а затем выйдите.
Я надеюсь, что это помогает.
источник
Если повторное подключение к Wi-Fi у вас не работает, попробуйте перезагрузить устройство.
У меня это работает. Надеюсь, поможет.
источник
У меня было такое же исключение в симуляторе (Android Studio на OSX), но подключение к тому же URL-адресу на симуляторе iOS работало нормально ... Похоже, все это связано с тем фактом, что я запускал симулятор при подключении к личной точке доступа для моего подключения к Интернету, а затем вернулся позже, когда был подключен к Wi-Fi, и симулятору не понравилось новое подключение к Интернету по какой-то причине, похоже, он думал, что старая точка доступа была текущим подключением, которое больше не работало ..
Закрытие и повторный запуск симулятора сработали!
источник
Я получил ту же ошибку, и проблема заключалась в том, что я был в VPN и не осознавал этого. После отключения от VPN и повторного подключения к моей сети WIFI проблема была решена.
источник
Не удалось настроить тег в файле манифеста
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
источник
Я столкнулся с этой ошибкой, когда запускал свое приложение для Android на домашнем Wi-Fi, а затем пытался запустить его на другом Wi-Fi, не закрывая симулятор.
Просто закрыть симулятор и повторно запустить приложение сработало!
источник
У меня была эта проблема на Android 10,
Изменено
targetSdkVersion 29
наtargetSdkVersion 28
Устранена. Не уверен, в чем настоящая проблема.Я считаю, что это не очень хорошая практика, но она сработала.
до:
compileSdkVersion 29
minSdkVersion 14
targetSdkVersion 29
В настоящее время:
compileSdkVersion 29
minSdkVersion 14
targetSdkVersion 28
источник
Я тестировал свое приложение с эмулятором Android и решил эту проблему, отключив и включив Wi-Fi на устройстве-эмуляторе Android! Это сработало отлично.
источник
У меня была такая же проблема, но с Glide. Когда я собирался отключиться от Wi-Fi и снова подключиться (как это было предложено здесь), я заметил, что нахожусь в режиме полета 🤦♂️
источник
У меня такая же проблема. java.net.UnknownHostException: невозможно разрешить хост «» ...
Я использую Visual Studio 2019 и Xamarin.
Я также снова переключился на свой Wi-Fi, но был в горячей точке.
Я решил это чистым смахиванием эмулятора. Восстановить заводские настройки. Затем повторно запустите приложение Visual Studio xamarin, которое снова развернет ваше приложение в новом эмуляторе.
Это сработало. Я думал, что буду сражаться несколько дней, чтобы решить эту проблему. К счастью, этот пост указал мне правильное направление.
Раньше я не мог понять, как он работал идеально, а затем остановился без изменения кода.
Это мой код для справки:
using var response = await httpClient.GetAsync(sb.ToString()); string apiResponse = await response.Content.ReadAsStringAsync();
источник
У меня была такая же проблема, но с небольшой разницей. Я добавил NetworkConnectionCallback, чтобы проверить ситуацию, когда интернет-соединение изменилось во время выполнения, и проверял это перед отправкой всех запросов:
private fun isConnected(): Boolean { val activeNetwork = cManager.activeNetworkInfo return activeNetwork != null && activeNetwork.isConnected }
Может быть состояние типа ПОДКЛЮЧЕНИЕ (при включении Wi-Fi видно, значок начинает мигать, после подключения к сети изображение статичное). Итак, у нас есть два разных состояния: одно CONNECT, другое CONNECTING, и когда Retrofit пытается отправить запрос, подключение к Интернету отключается и выдает исключение UnknownHostException. Я забыл добавить еще один тип исключения в функцию, которая отвечает за отправку запросов.
try{ //for example, retrofit call } catch (e: Exception) { is UnknownHostException -> "Unknown host!" is ConnectException -> "No internet!" else -> "Unknown exception!" }
Это просто непростой момент, который может быть связан с этой проблемой.
Надеюсь, помогу кому-нибудь)
источник