Выбор ответа Middle Сеть: Retrofit и OkHttp обновлено

HTTP без шифрования в Android

Вопрос

Приложение с targetSdk 28+ делает запрос на http:// адрес. Что произойдёт по умолчанию?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Запрос заблокируют: cleartext запрещён, нужен HTTPS или исключение. С Android 9 (API 28) cleartextTrafficPermitted по умолчанию false, и OkHttp получит UnknownServiceException: CLEARTEXT communication not permitted.

Варианты ответа

  1. Запрос пройдёт как обычно, но Logcat покажет предупреждение
  2. Запрос заблокируют: cleartext запрещён, нужен HTTPS или исключениеправильный ответ
  3. Android сам заменит схему на https и повторит запрос
  4. Запрос пройдёт через Wi-Fi, а в мобильной сети нет

Разбор

С Android 9 (API 28) cleartextTrafficPermitted по умолчанию false, и OkHttp получит UnknownServiceException: CLEARTEXT communication not permitted. Разрешить можно для конкретных доменов в network_security_config.xml (например, локальный сервер разработки). Автоматической замены схемы и зависимости от типа сети нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.