Выбор ответа Middle Сеть: Retrofit и OkHttp обновлено
HTTP без шифрования в Android
Вопрос
Приложение с targetSdk 28+ делает запрос на http:// адрес. Что произойдёт по умолчанию?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Запрос заблокируют: cleartext запрещён, нужен HTTPS или исключение. С Android 9 (API 28) cleartextTrafficPermitted по умолчанию false, и OkHttp получит UnknownServiceException: CLEARTEXT communication not permitted.
Варианты ответа
- Запрос пройдёт как обычно, но Logcat покажет предупреждение
- Запрос заблокируют: cleartext запрещён, нужен HTTPS или исключениеправильный ответ
- Android сам заменит схему на
httpsи повторит запрос - Запрос пройдёт через Wi-Fi, а в мобильной сети нет
Разбор
С Android 9 (API 28) cleartextTrafficPermitted по умолчанию false, и OkHttp получит UnknownServiceException: CLEARTEXT communication not permitted. Разрешить можно для конкретных доменов в network_security_config.xml (например, локальный сервер разработки). Автоматической замены схемы и зависимости от типа сети нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.