Ошибка подключения к интернету

У меня есть приложение для 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;
}
Другие вопросы по тегам