1、说明
为了安全,安卓7及以下版本,可以直接使用http进行网络访问(api),后来安全升级,因此出现此问题
2、解决方案
2.1 解决方案
就两个方案:
- 别用http,用https
- Xamarin.android中增加安全例外
2.1.1 使用https
2.1.2 安全列外(方案1)-最简单
在AndroidManifest.xml
中application
节点中,直接添加android:usesCleartextTraffic="true"
即可。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:usesCleartextTraffic="true" <!--就是这句话
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
</application>
2.1.3 安全列外(方案2)
增加如下的配置文件。需要填写你的IP或域名
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">domain or IP</domain>
</domain-config>
</network-security-config>
在AndroidManifest.xml
中application
节点中引用
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/AppTheme">
...
</application>
3、总结
因为安全原因造成的异常,可根据实际情况选择方案。个人建议在前期先使用配置文件(即方案2),后期再统筹使用https的方案(即方案1)。