Ответ 1
Короткий ответ:
Оказывается, некоторые мобильные операторы вернут IP-адрес для поиска DNS, который должен был провалиться как несуществующий. Сервер, к которому подключалось приложение, не смог бы иногда разрешаться, и оператор попытается помочь, предоставив страницу с похожими сайтами.
Более длинный ответ:
Имя хоста для сервера, к которому подключалось мое приложение, иногда не может быть разрешено. Обычно это означает, что UnknownHostException
указывает на отказ DNS. Я ожидаю, что это произойдет иногда, и приложение справится с этим. SSLException
была аномалией.
На носителях, которые перехватывают неудачные поисковые запросы DNS, при навигации по веб-обозревателю к несуществующему узлу будет отображаться страница "результатов поиска", которая поможет вам найти то, что вы искали. (Некоторые провайдеры DLS/кабели тоже делают это.) Однако для приложения, выполняющего HTTPS-запрос, это нарушает SSL-квитирование, потому что удаленный хост отличается от ожидаемого приложения.
Коренной причиной стал неправильный DNS-сервер, который возвратил бы несуществующую ошибку хоста для одного из серверов, которые использовало мое приложение. Подключение через Wi-Fi казалось более надежным (из-за другой причуды одного и того же DNS-сервера). Подключение Wi-Fi позволит кэшировать запись DNS, что временно маскирует проблему, когда мы впоследствии подключаемся к мобильному соединению данных. Однако большую часть времени мобильный оператор перехватывал неудачный поиск DNS и перенаправлял нас на неожиданное имя хоста, что привело к сбою SSL-связи.