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 · 访问量 127

猜你喜欢

转载自blog.csdn.net/weixin_45648614/article/details/104365392