#android #http #cleartext
Вопрос:
моя программа берет URL-адрес у пользователя, поэтому она может сделать запрос на любой веб-сайт в Интернете. Я пытаюсь сделать это возможным, я просмотрел все ответы об ошибках «Android HTTP Cleartext» и сделал это, но это все еще не позволяет мне подключить мой тестовый локальный PHP-сервер, чего мне здесь не хватает?
<uses-permission android:name="android.permission.INTERNET" />
...
<application
...
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
tools:ignore="UnusedAttribute"
Моя конфигурация безопасности:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">api.example.com</domain>
</domain-config>
</network-security-config>
Спасибо!
Комментарии:
1. Если ваш тестовый локальный PHP-сервер не является
api.example.com
или не является его поддоменом, ваша конфигурация сетевой безопасности будет проигнорирована.2. @CommonsWare Но как я могу сделать это, чтобы подключить каждый веб-сайт без каких-либо ошибок? Теперь я могу измениться api.example.com до 192.168.1.21[:8000], но не для всех веб-сайтов в мире.
3. В этом случае вам следует удалить android:networkSecurityConfig=»@xml/network_security_config».
Ответ №1:
Попробуйте изменить свой network_security_config.xml
следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true"></base-config>
</network-security-config>
Комментарии:
1. Обратите внимание, что по умолчанию для
cleartextTrafficPermitted
false
приложенийtargetSdkVersion
установлено значение 28 или выше . Таким образом, ваше предложение «или» вряд ли будет правильным для любого приложения, распространяемого в Play Store. Однако ваша<base-config>
рекомендация должна сработать.2. Спасибо @CommonsWare!, я отредактирую свой ответ