#java #flutter #ubuntu
Вопрос:
Я пытаюсь сделать запрос http post, чтобы спасти пользователя из приложения flutter, запущенного на реальном устройстве. Я запускаю API Springboot RESTful на сервере ubuntu с настройкой nginx. Запрос почтальона может быть отправлен. Я уже пытался добавить android:usesCleartextTraffic="true"
тег приложения в свой манифест Android, и я попытался добавить network_security_config
и добавил его в тег приложения вместе с тегом метаданных внутри тега приложения.
Вот мой файл network_security_config:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
Вот мой код для моего приложения flutter, вызывающего api:
Вот мой код API Springboot RESTful:
Комментарии:
1. Взгляните на это: developer.android.com/training/articles/security-config .
Ответ №1:
Вы должны использовать
Uri.https
и не
Uri.http
Комментарии:
1. Ну, это приводит к ошибке рукопожатия, которую я мог бы решить, настроив SSL, но это всего лишь тестовая среда для обучения flutter, поэтому http был бы идеальным.
2. У вас есть это в вашем Манифесте? <приложение …> … <метаданные android:имя=»io.flutter.сетевая политика» android:ресурс=»@xml/network_security_config»/> <метаданные android:имя=»io.flutter.сетевая политика» android:ресурс=»@xml/network_security_config»/></приложение>
Ответ №2:
Я разобрался со своей проблемой! Проблема заключалась в том, что я добавлял android:usesCleartextTraffic=»true» в неправильный файл манифеста Android. Раньше у меня это было под android/app/src/profile/AndroidManifest.xml но подходящее место находится под andoird/app/src/debug/AndroidManifest.xml. Как указано в https://flutter.dev/docs/release/breaking-changes/network-policy-ios-android