Android9.0 无法访问http网络请求的解决方案

在android9.0以上由于安全性高了,所有不做处理http不能使用,如果想要使用http请求的,有以下3种解决方法
1.最简单的方法降级targetSdkVersion的版本

将 targetSdkVersion 将到27或27以下

2.服务器请求不管是正式环境还是测试环境,把http改为https (推荐使用,https的安全行高)

3.兼容http请求
用Retrofit请求网络报这个错CLEARTEXT communication to host not permitted by network
由于 Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。

如果当前应用的请求是 htttp 请求,而非 https ,这样就会导系统禁止当前应用进行该请求,如果 WebView 的 url 用 http 协议,同样会出现加载失败,https 不受影响。

为此,OkHttp3 做了检查,所以如果使用了明文流量,默认情况下,在 Android P 版本 OkHttp3 就抛出异常: CLEARTEXT communication to " + host + " not permitted by network security policy

     if (!Platform.get().isCleartextTrafficPermitted(host)) {
          throw new RouteException(new UnknownServiceException(
          "CLEARTEXT communication to " + host + " not permitted by network security policy"));
     }

(1):在清单文件中设置networkSecurityConfig属性

<manifest ... >
	<application 
		android:networkSecurityConfig="@xml/network_security_config">
	</application>
</manifest>

2)在res/xml文件夹下创建network_security_config.xml

<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值