Ошибка подключения к интернету
У меня есть приложение для Android, которое подключается к Интернету. Я отслеживаю все возможные сценарии подключения и замечаю, что когда у меня нет подключения к Интернету, UnknownHostException
является thrown
, Я немного запутался здесь с тех пор, как получил UnknownHostException
будет означать, что приложению удалось подключиться к Интернету, но не удалось найти указанный URL.
Я получаю правильное исключение? Не могли бы вы объяснить, почему я получаю UnknownHostException
в этом?
Кроме того, вы можете сказать конкретные исключения для этих сценариев:
- Когда нет подключения к интернету.
- Когда URL не может быть найден.
- Когда запрос истек.
- Когда сайт не работает.
- Когда доступ запрещен.
Я также был бы признателен, если бы вы могли дать мне больше сценариев и исключений. Я должен перехватить все возможные подключения и отобразить наиболее подходящее сообщение в зависимости от типа ошибки подключения.
4 ответа
получение UnknownHostException будет означать, что приложение смогло подключиться к Интернету
Нет, это не так. Это означает, что приложению не удалось разрешить имя хоста. Это может быть связано с тем, что имя хоста не существует или потому, что ему не удалось подключиться к Интернету для его разрешения.
Когда нет подключения к интернету.
Нет конкретного исключения. "Нет подключения к Интернету" не имеет четко определенного значения. Условие разрешается в одном из других режимов отказа ниже.
Когда URL не может быть найден.
Если хост не может быть найден, UnknownHostException
, Если контентная часть URL не может быть найдена, HTTP 404.
Когда запрос истек.
ConnectException
с "тайм-аутом соединения" в качестве сообщения, или SocketTimeoutException
если это тайм-аут чтения.
Когда сайт не работает.
ConnectException
с "соединение отказано" в качестве сообщения.
Когда доступ запрещен.
HTTP 403.
Проверка подключения к Интернету, просто попробуйте этот пример функции....
public static boolean CheckInternet(Context context)
{
ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
android.net.NetworkInfo mobile = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
return wifi.isConnected() || mobile.isConnected();
}
Я надеюсь, что это поможет....
для проверки интернет-соединения....
boolean b_IsConnect = isNetworkAvailable();
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager
.getActiveNetworkInfo();
return activeNetworkInfo != null;
}
Чтобы проверить подключение к Интернету, используйте эту функцию.
public boolean isConnectingToInternet(){
ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
return false;
}