Android9.0 http网络请求失败问题分析与解决方案
最近做的项目,在8.0版本以下都是可以正常使用,突然接收到反馈说软件在9.0无法使用,连登陆都无法登陆。而刚好我的手机也刚升级到9.0系统,就进行了测试,发现问题和查找问题,得到以下错误原因和解决方案:
1、用Retrofit请求网络报这个错
CLEARTEXT communication to host not permitted by network
由于 Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。
如果当前应用的请求是 htttp 请求,而非 https ,这样系统就会禁止当前应用进行该请求,如果 WebView 的 url 用 http 协议,同样会出现加载失败,无法显示webview的内容,https 则不受影响。
为此,OkHttp3 做了检查,所以如果使用了明文流量,默认情况下,在 Android P 版本 OkHttp3 就抛出异常:
"CLEARTEXT communication to " + host + " not permitted by network security policy
这是因为在更新了9.0系统之后,所有应用都使用HTTPS
这是对Android安全用户的肯定。AndroidP上的所有应用程序默认都使用HTTPS。
解决方案:
一、APP改用https请求
这种方式需要接口去协调,把请求域名改为https。
二、targetSdkVersion 降到27以下
三、在 res 下新增一个 xml 目录,然后创建一个名为:network_security_config.xml 文件(名字自定) ,内容如下,大概意思就是允许开启http请求。
<?xml version="1.0" encoding="utf-8"?>
<!--Android 9.0 https请求适配-->
<network-security-config><base-config cleartextTrafficPermitted="true" />
</network-security-config>
然后在APP的AndroidManifest.xml文件下的application标签增加以下属性
android:networkSecurityConfig="@xml/network_security_config"
如图所示:
到此就解决了Android9.0无法请求接口获取数据的错误了。
基于有大兄弟说第三个方案无法使用的问题,我贴下我的demo,这个demo里面是我封装的http请求,也使用了这个方案,如果觉得这个网络请求框架适合的话,也可以使用使用,不过现在还不够完善,还在一步一步完善中,博文使用说明也还在书写中,下面贴下github地址:
https://github.com/freakcsh/HttpManage
顺便附带上后台的demo地址,这个也是我自己写的,和后台调试接口太麻烦,还不如自己写一个,有需要的可以拿去测试测试,可以在本地运行,ip是自己本机的ip,端口号是9999.可自己修改
https://github.com/freakcsh/httphelper
Android9.0 http网络请求失败问题分析与解决方案相关推荐
- Android9.0 http网络请求失败
解决方法 1.使用HTTPS 2.targetSdkVersion 降到27以下 3.设置isCleartextTrafficPermitted()为false 最近做的项目,在8.0版本以下都是可以 ...
- Android9.0 http网络请求失败解决方法
前言:最近在做一个OCR,调用的是百度OCR的接口,文字识别出来之后想加一个翻译的功能,还是使用的百度翻译.(不管外界如何唱衰百度,个人感觉百度这方面做的还是可以的).由于之前请求网络用的okhttp ...
- Android9.0 http网络请求失败问题的处理
目录 处理方法(任意一种): APP改用https请求 targetSdkVersion 降到27以下 配置network-security-config(推荐) 原因 出错案例 处理方法(任意一种) ...
- 微信小程序常见网络请求失败问题总结及解决方案
微信小程序常见网络请求失败问题总结及解决方案 微信开发者工具中未勾选不校验合法域名设置 未勾选这个设置在任何环境下发送http网络请求会失败 发送的是https请求,但网络请求依旧是失败 需要到官方的 ...
- Android异常-android5.0以上网络请求失败-retry error, curr request is null
异常描述: 使用Xutils框架做了登录请求,5.0以下和部分5.0android能够正常登录,大部分android5.0的手机发现一直显示正在加载,调试发现,输出错误信息 retry error,c ...
- 网络请求失败CLEARTEXT communication to “ “ not permitted by network security policy
ok http3 + retrofit 网络请求,在Android9.0手机上请求失败,报错:CLEARTEXT communication to " " not permitte ...
- (转)json数据解析异常而导致网络请求失败的解决办法(其一)
原文出处 https://www.jianshu.com/p/d6bd6bd5fce3 参考文章 问题概述 笔者在开发过程中临时遇到一个本来仅有web端的项目临时增加Android端,导致后端在出接口 ...
- android json解析异常,json数据解析异常而导致网络请求失败的解决办法(其一)
问题概述 笔者在开发过程中临时遇到一个本来仅有web端的项目临时增加Android端,导致后端在出接口时并未考虑Android端的json数据的解析,导致接口是这样的.... 正确请求 { " ...
- RTSP安防网络摄像头/海康大华硬盘录像机/NVR网页无插件低延时播放流媒体服务器EasyNVR页面显示网络请求失败问题
进入移动互联网时代以来,企业微信公众号已成为除官网以外非常重要的宣传渠道,当3.2亿直播用户与9亿微信用户的势能累加,在微信上开启直播已成为越来越多企业的必然选择. 青犀团队研发的EasyNVR核心在 ...
最新文章
- /etc/hosts/中HOSTNAME错误导致lsnrctl启动错误
- SharePoint 2010 与 SQL Server 2012 报表服务集成
- 2016c语言模拟试卷一,2016年9月计算机二级C语言考试预测试题及答案(4)
- 【深度学习】10个算法从业人员必须知道的TensorFlow技巧
- Lua 语言 快速入门
- TexBox.AutoCompleteSource
- 在 Dubbo3.0 上服务治理的实践
- Spring Boot 之事件(Event)
- 新兴IT企业特斯拉(四)——Model 3
- 自然语言处理的学习心得
- Xcode 模拟器Simulator手动下载(iOS 8 - iOS 12)
- java实现与图灵机器人聊天_调用图灵机器人API实现简单聊天
- ui界面设计基本原则
- 网易楚留香获取服务器信息,楚留香手游生活采集物有哪些 获取攻略
- 美国贝勒大学计算机科学专业怎么样,美国贝勒大学怎么样
- MySQL ('root'@'%') does not exist的问题
- 《Python机器学习——预测分析核心算法》——2.5 用实数值属性预测实数值目标:评估红酒口感...
- 她他它的用法?收藏给小孩看吧
- 微医网爬虫(一) java实现
- numpy 学习汇总5-数组运算 tcy