Исключение приложения Flutter Phone: ClientException с SocketException: Не удалось выполнить поиск хоста: ‘xxxxxxx’ ошибка

Вопрос или проблема

Я получаю ошибку от API, который я использую в приложении, созданном на Flutter. В веб- и десктопном приложении все работает хорошо, но когда я запускаю приложение на телефоне, возникает ошибка.

Ошибка:

Исключение: ClientException с SocketException: Не удалось найти хост: ‘xxxxxx’ (Ошибку ОС: Нет адреса, связанного с именем узла, errno = 7),

Код:

 try {
      final response = await http.get(
        Uri.parse(url),
        headers: {
          'Authorization': basicAuth,
          'Accept': 'application/json',
        },
      );

Я также добавил код разрешения на интернет, но это не сработало.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application

Ответ или решение

Ошибка ClientException с SocketException: Не удалось разрешить адрес хоста: 'xxxxxx' (OS Error: No address associated with hostname, errno = 7) в приложении на Flutter может быть вызвана рядом факторов, особенно когда проблема возникает только на мобильной платформе, а не на веб- или десктопных версиях. В этом ответе мы рассмотрим основные причины данной ошибки и возможные решения.

1. Проверьте правильность URL

Первым делом необходимо убедиться, что URL, который вы используете для API-запросов, правильный. Убедитесь, что:

  • Не содержатся опечатки.
  • Не указаны протоколы (например, http:// или https://) некорректно.
  • Домен доступен и корректно настроен.

2. Настройка разрешений в Android

Вы указали, что добавили разрешения в файл AndroidManifest.xml. Убедитесь, что разрешения указаны корректно:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Если эти разрешения добавлены, но ошибка все равно возникает, убедитесь, что они находятся вне тега <application> и доступны для всей аппликации.

3. Проблемы с сетью

Мобильная сеть может быть нестабильной или отключенной. Проверьте следующее:

  • Убедитесь, что устройство подключено к интернету (Wi-Fi или мобильные данные).
  • Попробуйте использовать другой способ подключения к интернету, чтобы проверить, сохраняется ли ошибка.
  • Убедитесь, что на устройстве нет активных VPN или прокси-серверов, которые могут блокировать доступ к интернету.

4. Проверка вашего API

Убедитесь, что ваш API сервер доступен извне:

  • Попробуйте использовать ping или curl на том же устройстве для проверки доступности вашего API.
  • Проверьте настройки CORS вашего API, если это веб-сервис. Иногда сервер может блокировать запросы из мобильного приложения.

5. Разрешение DNS

Ошибки DNS могут быть причиной невозможности разрешения хоста. Рассмотрите возможность:

  • Попробуйте использовать другой DNS-сервер, например, Google DNS (8.8.8.8) или Cloudflare DNS (1.1.1.1) в настройках вашего устройства.
  • Перейдите в настройки сети на вашем устройстве и сбросьте настройки DNS.

6. Изоляция проблем

Для диагностики этой проблемы можно использовать дополнительные средства:

  • Проведите отладку с помощью инструмента, который может просматривать сетевые запросы. Например, используйте инструмент Charles Proxy для просмотра, какие запросы отправляются и какие ответы вы получаете.
  • Проверьте логи вашей аппликации на наличие других исключений, которые могут возникать в процессе выполнения.

Заключение

Ошибка Failed host lookup часто указывает на проблемы с сетью или неправильные настройки. Внимательное следование инструкциям по проверке соединения, настройкам разрешений и корректности URL поможет вам быстрее найти решение. Если приведенные шаги не помогли, рассмотрите возможность обращения к вашему API-поставщику для поддержки и получения дополнительной информации.

Успехов в разработке вашего приложения на Flutter!

Оцените материал
Добавить комментарий

Капча загружается...