Работаем с обычным HTTP в Android 8, 8.1 и 9

Начиная с Android 8 по умолчанию запрещён обмен данными по сети открытым текстом. В частности, по умолчанию запрещено использование протокола HTTP, в то время как HTTPS может свободно применяться. Но, как быть если в силу специфики решаемой задачи нужен именно HTTP?

На самом деле, этот вопрос можно легко разрешить путём настройки конфигурации сетевой безопасности.

В папке res проекта нужно создать папку xml и поместить в неё файл network_sequrity_config.xml следующего содержания:

Указанные IP-адреса и домен example.com приведены просто в качестве примера.

Тег domain-config с атрибутом cleartextTrafficPermitted равным true разрешает использование протокола HTTP для IP-адресов и доменов, которые указаны во вложенных тегах domain. В свою очередь атрибут includeSubdomains у тега domain указывает распространяется ли это разрешение, но поддомены (если true, то распространяется).

После того как файл network_sequrity_config.xml будет добавлен, нужно указать его в атрибуте android:networkSecurityConfig тега application в манифесте приложения, как показано ниже.

Если всё будет сделано правильно, то ваше приложение сможет без проблем работать с указанными IP-адресами или доменами по HTTP.

Источники

  1. Конфигурация сетевой безопасности (документация Google).

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *