Ошибка подключения к интернету - PullRequest
13 голосов
/ 20 декабря 2011

У меня есть приложение для Android, которое подключается к Интернету. Я перехватываю все возможные сценарии подключения и замечаю, что если у меня нет подключения к Интернету, UnknownHostException равен thrown. Я немного запутался, поскольку получение UnknownHostException будет означать, что приложение смогло подключиться к Интернету, но не смогло найти указанный URL.

Получаю ли я правильное исключение? Не могли бы вы объяснить, почему я получаю UnknownHostException в этом?

Также, вы можете сказать конкретные исключения для этих сценариев:

  • Когда нет подключения к Интернету.
  • Когда не удается найти URL.
  • Когда время ожидания истекло.
  • Когда сайт не работает.
  • Когда доступ запрещен.

Я также был бы признателен, если бы вы могли дать мне больше сценариев и исключений. Я должен перехватить все возможные подключения и отобразить наиболее подходящее сообщение в зависимости от типа ошибки подключения.

Ответы [ 4 ]

20 голосов
/ 20 декабря 2011

получение исключения UnknownHostException будет означать, что приложению удалось подключиться к Интернету

Нет, это не так.Это означает, что приложению не удалось разрешить имя хоста.Это может быть связано с тем, что имя хоста не существует или потому, что ему не удалось подключиться к Интернету для его разрешения.

Когда нет подключения к Интернету.

Нет конкретного исключения.«Нет подключения к Интернету» не имеет четко определенного значения.Условие разрешается в одном из следующих режимов отказа:

Когда URL-адрес не может быть найден.

Если хост не может быть найден,UnknownHostException.Если контентная часть URL не может быть найдена, HTTP 404.

Когда время запроса истекло.

ConnectException с «тайм-аутом соединения» в качестве сообщенияили SocketTimeoutException, если это тайм-аут чтения.

Когда веб-сайт не работает.

ConnectException с сообщением «отказано в соединении».

Когда доступ запрещен.

HTTP 403.

3 голосов
/ 20 декабря 2011

Проверка подключения к Интернету, просто попробуйте этот пример функции ....

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();
}

Надеюсь, это поможет ....

2 голосов
/ 20 декабря 2011

для проверки интернет-соединения ....

boolean b_IsConnect = isNetworkAvailable();
private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager
                .getActiveNetworkInfo();
        return activeNetworkInfo != null;
    }
1 голос
/ 26 августа 2013

Для проверки интернет-соединения используйте эту функцию.

  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;
}
...