На Xiaomi/Redmi (MIUI) локальный режим не работает с разрешением DNS для локальных имен хостов, в то время как тот же процесс работает на других устройствах Android.
Я могу заставить его работать с использованием прямого IP, но я хочу использовать имя хоста, потому что IP может измениться (изменения DHCP/сети).
/>Журнал ошибок:
Код: Выделить всё
[RESPONSE] [REST REQUEST] ************* ERROR *************
{
"method": "GET",
"url": "https://type-macaddres.local/...",
"stage": "connection",
"error": "SocketException: Failed host lookup: 'type-macaddres.local' (OS Error: No address associated with hostname, errno = 7)",
"mappedError": {
"url": "https://type-macaddres.local/...",
"statusCode": 503,
"description": "Failed host lookup: 'type-macaddres.local'",
"type": "ConnectionError",
"errors": {
"code": 503,
"message": "Failed host lookup: 'type-macaddres.local'"
}
}
}
*********************************
- nsd-пакет для обнаружения служб (DNS-SD/mDNS), тип службы, например _name_ Secondaname._tcp
- dart:io HttpClient для запросов REST
- connectivity_plus для подключения состояние
- Обнаружение с помощью autoResolve: true и ipLookupType: IpLookupType.any
Код: Выделить всё
final discovery = await startDiscovery(
'_name_secondaname._tcp.',
autoResolve: true,
ipLookupType: IpLookupType.any,
);
- Приложение Flutter (Android)
- Запрос к http(s)://.local/...
- Не работает только на Xiaomi/Redmi (MIUI)
- Разрешения Android: INTERNET, ACCESS_NETWORK_STATE, CHANGE_WIFI_MULTICAST_STATE
- Частный DNS вкл./выкл.
- Ограничения батареи/данных MIUI отключены
- ipLookupType: любой
- Известно ли это ограничение MIUI при разрешении локальных имен хостов из Flutter/Dart HttpClient?
- Является ли использование прямого IP единственным надежным подходом на Xiaomi?
- Какой-нибудь обходной путь, специфичный для Xiaomi, который надежно исправляет разрешение имени хоста mDNS?
ПРИМЕЧАНИЕ № 2. Я тестирую на реальном устройстве (Xiaomi Redmi 8T)