Xamarin.Android中Cleartext HTTP traffic not permitted异常

针对安卓7及以下版本因安全升级无法直接使用http的问题,提供了两种解决方案:一是在AndroidManifest.xml中设置android:usesCleartextTraffic允许http流量,二是创建网络安全性配置文件,明确允许特定域名的http请求。建议初期使用配置文件,后期过渡到https以确保安全。
摘要由CSDN通过智能技术生成

1、说明

为了安全,安卓7及以下版本,可以直接使用http进行网络访问(api),后来安全升级,因此出现此问题

2、解决方案

2.1 解决方案

就两个方案:

  1. 别用http,用https
  2. Xamarin.android中增加安全例外

2.1.1 使用https

2.1.2 安全列外(方案1)-最简单

AndroidManifest.xmlapplication节点中,直接添加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.xmlapplication节点中引用

<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)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值