Android9.0 http网络请求异常解决办法

Android9.0 http网络请求异常解决办法

前言

2018年 8 月 7 日,Google正式发布 Android 9.0 正式版系统,并宣布系统版本 Android P 被正式命名为代号“Pie”。
为保证用户数据和设备的安全,针对Android P 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,由于 Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。
因此运行 Android P 系统的应用的请求是 htttp 请求,而非 https,系统就会禁止当前应用进行该请求,而https 不受影响。

在Android P 使用HttpUrlConnection进行http请求会出现以下异常:

W/System.err: java.io.IOException: Cleartext HTTP traffic to **** not permitted

使用OKHttp请求则出现:

java.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security policy
解决方法:
  1. 使用https请求
    网站要实现https访问,首选你需要申请一张SSL证书,然后将SSL证书部署到服务器端,开启443端口,就可以实现https访问了。

  2. targetSdkVersion版本降到27以下

  3. 修改AndroidManifest.xml文件
    在AndroidManifest.xml的application 中加入一条属性

android:usesCleartextTraffic="true" 

在这里插入图片描述android:usesCleartextTraffic 指示应用程序是否打算使用明文网络流量,目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“ false”。
当属性设置为“ false”时,平台组件将拒绝应用程序使用明文流量的请求,所以将属性改为“true”,这样再使用http协议进行网络请求时系统就不会出现异常了,从系统安全性考虑,最好让服务端将接口的http全部改成https这样既保证了传输安全性,问题也完美解决了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值