Решение проблемы UnknownHostException на Android эмуляторе

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Ошибка java.net.UnknownHostException: Некорректное имя сервера: local указывает на то, что имя "local" не распознано как допустимое. Вместо "local" используйте "localhost" или IP-адрес "127.0.0.1" для обращения к локальному серверу.

Java
Скопировать код
InetAddress address = InetAddress.getByName("localhost"); // Вот где расположен localhost
Кинга Идем в IT: пошаговый план для смены профессии

Устранение проблемы

Проверка имени хоста

Чтобы убедиться, что имя "local" правильно транслируется в IP:

  1. Выполните команду ping local в консоли. – Если пинг не проходит, то имя "local" не разрешено.
  2. Добавьте запись 127.0.0.1 local в файл /etc/hosts, если вы специально задали такое имя хоста.

Использование локального сервера для тестирования

При работе с эмуляторами Android или при тестировании на локальном сервере:

  • Убедитесь, что вы используете адреса "localhost" или "127.0.0.1" для соединения с эмулятором.
  • При необходимости добавьте виртуальное имя хоста в настройки эмулятора.

Оптимизация кода

Для верной настройки имени хоста в коде:

  • Убедитесь, что нет лишних пробелов при помощи String.trim().
  • Для IPv6 используйте ::1 в качестве адреса loopback – это современный аналог 127.0.0.1.
  • Проверьте, правильно ли обрабатываются строки с именами хостов, разделенных точками с запятой.

Качественная обработка исключения

Правильно реагируйте на UnknownHostException:

Java
Скопировать код
try {
    InetAddress address = InetAddress.getByName("local"); // Здесь должен быть localhost?
} catch (UnknownHostException e) {
    informUser("Простите, но мы не можем найти 'local'.");  
}

Информирование пользователя поможет при возникновении проблем!

Проверка сетевого подключения

  • Убедитесь, что ваше устройство подключено к интернету или Wi-Fi.
  • Если "local" предполагается быть разрешенным, пропингуйте его и проверьте настройки DNS.

Визуализация

Представьте, что вы ищете вечеринку по адресу Birthday Street, но получили ошибочную информацию:

Markdown
Скопировать код
У вас есть: "101 Birthday Street, 'local'"
Реальная ситуация: "Извините, вечеринка по адресу 'local' сегодня не состоится!"

java.net.UnknownHostException = 🎉🔍😅

Markdown
Скопировать код
Поиск: 🎈(Local)
Результат: 🚫🎉 Некорректный адрес!

Адрес "Local" сегодня не сопоставляется ни с одним событием в городе, то есть его невозможно сопоставить с действительным именем хоста.

Как устранить UnknownHostException

Если вы столкнулись с UnknownHostException:

  • Проверьте DNS-записи или добавьте требуемую запись в файл хостов.
  • Возможно, вы пытаетесь соединиться с несуществующим сервером, что аналогично тому, как если бы вы попытались попасть на уже закончившуюся вечеринку на google.com.

Решение проблем, специфичных для эмулятора

Проверьте корректность имени хоста внутри эмулятора:

  • Внесите изменения в файл /etc/hosts самого эмулятора.
  • Тщательно проверьте настройки точки доступа и конфигурацию маршрутизатора.

Если проблема остаётся без решения

Если проблема всё ещё актуальна, попробуйте следующее:

  • Воспользуйтесь командой hostname -f для точного определения имени хоста.
  • Если сервер расположен в той же сети, подключитесь к локальной сети.
  • Иногда причины UnknownHostException сложны, как и поиски вечеринки. Возможно потребуется более глубокий анализ.

Полезные материалы

  1. UnknownHostException (Java Платформа SE 8) — документация java.net.UnknownHostException на официальном сайте Java.
  2. Обсуждения UnknownHostException на Stack Overflow — обсуждение сообщества и решения по проблеме с UnknownHostException.
  3. Обработка исключений в Java – GeeksforGeeks — детальное описание механизмов исключений в Java, включая UnknownHostException.
  4. Настройка локального тестового сервера – инструкция по установке локального тестового сервера от MDN.
  5. Руководство по безопасности Java — информация о настройке безопасности в Java.