Android 平台不允许颤振不安全的http
Flatter团队最近做了这个更改,现在不允许不安全的http连接。 我想知道如何将手机上的Flitter应用程序连接到PC上运行的本地go服务器Android 平台不允许颤振不安全的http,android,flutter,http,Android,Flutter,Http,Flatter团队最近做了这个更改,现在不允许不安全的http连接。 我想知道如何将手机上的Flitter应用程序连接到PC上运行的本地go服务器 我的服务器正在运行:但它没有连接到它。正如我已经回答的那样。来解决你的问题。首先在res/xml目录中名为network\u security\u config的文件中添加以下配置(我的完整路径是/Users/dolphin/source/third-party/Cruise/android/app/src/main/res/xml/network
我的服务器正在运行:但它没有连接到它。正如我已经回答的那样。来解决你的问题。首先在res/xml目录中名为
network\u security\u config
的文件中添加以下配置(我的完整路径是/Users/dolphin/source/third-party/Cruise/android/app/src/main/res/xml/network\u security\u config
):
这可能允许http通信。但它只是用于在本地环境或测试环境中进行调试,最好的方法是使用https通信。更多信息:在android/app/AndroidManifest中
<application ...
android:networkSecurityConfig="@xml/network_security_config" >
<meta-data android:name="io.flutter.network-policy"
android:resource="@xml/network_security_config"/>
然后在其中创建一个文件夹xml创建一个文件:network\u security\u config.xml
<?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>
我正在使用
final String baseUrl='0http://......herokuapp.com/';代码>
这个url给了我这个例外,但是我做了http到https
final String baseUrl='0https://......herokuapp.com/';代码>
那是由于某些手机的安全目的
这对我很有用,提前谢谢 实现这一点的简单方法是在AndroidManifest.xml中使用此属性,这将允许http通信:
<application android:usesCleartextTraffic="true">
</application>
通常需要(而且更可取)使用https链接而不是http链接。但是,这可以被覆盖,如下所示
安卓
打开android/app/src/main文件夹中的AndroidManifest.xml文件。然后将usesCleartextTraffic
设置为true
<application
...
android:usesCleartextTraffic="true"
... >
了解更多信息
网间网操作系统
打开ios/Runner文件夹中的Info.plist文件。然后添加以下键
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
更多信息,请参阅
马科斯
这与iOS相同。打开macos/Runner文件夹中的Info.plist文件。然后添加以下键
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
1-转到以下路径:yourProject\android\app\src\main\res
并创建名为xml的文件夹
2-打开此路径:yourProject\android\app\src\main\res\xml
并创建名为network\u security\u config.xml的xml文件
<?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>
3-在network\u security\u config.xml文件中写入以下内容:
<?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>
4-您需要转到以下路径:yourProject\android\app\src\main\AndroidManifest.xml:
<application
android:usesCleartextTraffic="true"
<activity>
<meta-data android:name="io.flutter.network-policy"
android:resource="@xml/network_security_config"/>
</activity>
</application>
如果您尝试了上述所有解决方案,但没有修复,则应关闭模拟器并再次打开,因为gradle中的更改是重要的更改,因此他们需要它。您需要关闭模拟器,然后再次打开它以查看上述解决方案的结果。对我来说,最简单的解决方案是将以下行添加到我的DEBUG清单文件中,该文件可以在$project\u path\android\app\src\DEBUG\AndroidManifest.xml中找到:
<application
android:usesCleartextTraffic="true"
<activity>
<meta-data android:name="io.flutter.network-policy"
android:resource="@xml/network_security_config"/>
</activity>
</application>
重要-直到我重新启动模拟器,它才起作用,所以请确保不要跳过这一步。我将颤振HTTP库升级到最新版本
然后将URI声明更改为HTTPS而不是HTTP
final http.Response response = await http.post(
Uri.https('<IP_ADDRESS>', ''),
headers: <String, String>{
'<YOUR_HEADERS>',
},
body: jsonEncode(<String, Object>{
'<REQUEST_BODY>',
}),
);
final http.Response=wait http.post(
Uri.https('',''),
标题:{
'',
},
正文:JSONECODE({
'',
}),
);
这为我解决了问题简单的方法:
Android
转到android/app/src/main/AndroidManifest.xml。打开AndroidManifest.xml文件。然后在内部设置android:usesCleartextTraffic=“true”
例如:
<uses-permission android:name="android.permission.INTERNET" /> //This line add
<application
android:name="io.demo.app.test"
android:label="ProjectName"
android:usesCleartextTraffic="true" //This line add
android:icon="@mipmap/ic_launcher">
//此行添加
iOS
转到主词典下的ios/Runner/info.plist并打开info.plist设置以下代码行:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
完成此浸泡后,关闭此应用程序并运行:
- 扑通
- 飞舞酒吧
- 飞跑
我不知道有人说要更改app/src/main/AndriodManifest.xml中的Android清单文件,而flift网站上的教程明确指出:
如果要允许Android调试版本使用HTTP连接,可以将以下代码段添加到$project\u path\Android\app\src\debug\AndroidManifest.xml中:
<application
android:usesCleartextTraffic="true"
<activity>
<meta-data android:name="io.flutter.network-policy"
android:resource="@xml/network_security_config"/>
</activity>
</application>
请阅读如何通过与您的帖子共享的相同指南链接启用http网络请求。您可以只允许到域的不安全连接。不接受特定IP地址作为输入。这与平台支持的一致。您可以检查步骤4代码吗?对于那些在iOS上进行测试并想知道将代码放在哪里的人,我在AndroidManifest.xml:46:5-49:17上的元素活动缺少'name'键属性,这是一个错误;将iOS应答中的代码放在
标记之间。另外,再次检查主机防火墙是否未启用。