一、前言

为保证用户数据和设备的安全,Google 针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接。因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android Nougat 和 Oreo 则不受影响。

二、问题

在Android P 系统的设备上,如果应用使用的是 非加密的明文流量 的 http 网络请求,则会导致该应用无法进行网络请求,https 则不会受影响。同样地,如果应用嵌套了 webview,webview 也只能使用 https 请求。

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

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

使用 OKHttp 请求则出现:

java.net.UnknownServiceException: CLEARTEXT communication to **** not permitted by network security policy

三、解决方案

针对这种情况,有以下四种解决方案:

  1. APP 改用 https 请求。条件允许的话,建议使用,以增强安全性。

  2. Android 编译的 targetSdkVersion 改为27以下。因为是高版本才出现的,那可以降维处理。

  3. 在 AnroidManifest.xml 中的 application 添加设置项:
    <application android:usesCleartextTraffic=“true”>

  4. 添加网络安全配置。
    在 res 的 xml 目录下,新建一个 network_config.xml 文件(名称随便取):

<?xml version="1.0" encoding="utf-8"?>
<network-security-config><base-config cleartextTrafficPermitted="true" />
</network-security-config>

然后在 AnroidManifest.xml 中的 application 添加指向该文件的设置项:

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

5.

非Activity-Context启动Activity,现在强制执行 FLAG_ACTIVITY_NEW_TASK 要求,Apache HTTP 客户端弃用,影响采用非标准 ClassLoader 的应用。

在项目中用到了 Apache HTTP client 的相关类,就会抛出找不到这些类的错误。这是因为官方已经在 Android P 的启动类加载器中将其移除,如果仍然需要使用 Apache HTTP client.

Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.protocol.BasicHttpContext" on path: DexPathList”

在 AnroidManifest.xml 中的 application 添加:

<uses-libraryandroid:name="org.apache.http.legacy"android:required="false" />

Android9.0以上 http网络请求失败相关推荐

  1. Android 9.0/P(android p指安卓9.0版本) okhttp3网络请求出错

    已经在AndroidManifest.xml申请网络权限,在8.0以下的系统中网络访问正常,但是9.0中出现网络请求失败 Android 9.0的网络请求失败如下图: 出现这个错误的原因是:从Andr ...

  2. (转)json数据解析异常而导致网络请求失败的解决办法(其一)

    原文出处 https://www.jianshu.com/p/d6bd6bd5fce3 参考文章 问题概述 笔者在开发过程中临时遇到一个本来仅有web端的项目临时增加Android端,导致后端在出接口 ...

  3. android json解析异常,json数据解析异常而导致网络请求失败的解决办法(其一)

    问题概述 笔者在开发过程中临时遇到一个本来仅有web端的项目临时增加Android端,导致后端在出接口时并未考虑Android端的json数据的解析,导致接口是这样的.... 正确请求 { " ...

  4. android——rxjava异步Consumer类似promise、重试机制、网络请求失败重试、合并两个异步都完成才往下运行、实现数据缓存优先加载

    1.rxjava异步Consumer 导入fxjava包: implementation 'io.reactivex.rxjava3:rxjava:3.0.6' // rxBinding已经依赖了rx ...

  5. JS基础之网络请求失败自动重试

    当我们在进行网络请求的时候,有时候由于信号不好等因素导致网络请求失败,这时我们通常就直接返回了,这不够优雅,更好的处理方式时能进行自动重试. 假设我们的网络请求代码如下: // 伪代码 functio ...

  6. 今天升级Xcode 7.0 bata发现网络访问失败。

    今天升级Xcode 7.0 bata发现网络访问失败. 输出错误信息 The resource could not be loaded because the App Transport Securi ...

  7. RTSP安防网络摄像头/海康大华硬盘录像机/NVR网页无插件低延时播放流媒体服务器EasyNVR页面显示网络请求失败问题

    进入移动互联网时代以来,企业微信公众号已成为除官网以外非常重要的宣传渠道,当3.2亿直播用户与9亿微信用户的势能累加,在微信上开启直播已成为越来越多企业的必然选择. 青犀团队研发的EasyNVR核心在 ...

  8. Hikvison对接iSecure Center时获取Appkey和Secert、不显示API网关、预览时提示网络请求失败

    场景 SpringBoot+Vue+iSecure Center(海康综合安防管理平台)实现视频预览: SpringBoot+Vue+iSecure Center(海康综合安防管理平台)实现视频预览_ ...

  9. iphone/苹果手机 微信小程序 真机调试 网络不通 网络请求失败

    问题 问题:iphone/苹果手机 微信小程序 真机调试 网络请求失败,可以确定的是,真机和开发工具所在电脑肯定是在一个网段的,把蜂窝数据都关了,只保留了WIFI,还是请求不通, 解决 最终参考 微信 ...

最新文章

  1. 结构控制Switch Case
  2. ObjectOutputStream 和 ObjectInputStream的使用
  3. Spring Cloud Alibaba迁移指南2:一行代码从Hystrix迁移到Sentinel
  4. 方式四:修改模块导入段来拦截API
  5. 动手造轮子:实现一个简单的 EventBus
  6. java图形包_java流布局图形包
  7. React ref的转发
  8. 申通快递:1月快递服务业务收入25.65亿元 同比增长21.27%
  9. php聊天机器人源码,简单聊天机器人源码
  10. L73.linux命令每日一练 -- 第十章 Linux网络管理命令 -- dig和host
  11. 台式计算机关机后自行重启,台式电脑点关机后又自动重启怎么处理
  12. 我的人生就是一次次世界杯串起来的
  13. MongoDB一篇从入门到实战
  14. 北京哪里可以买到含羞草啊?或者种子也行
  15. Mac-Charles
  16. Python-使用方法修改字符串的大小写
  17. 2021-07-28 产品开发过程纪实-家用洗菜-智商税收割
  18. android 手机屏幕密度等级和屏幕逻辑尺寸
  19. 机器自动翻译古文拼音 - 十大宋词 - 江城子·乙卯正月二十日夜记梦 苏轼
  20. QQ音乐Android端120万行代码,编译耗时是怎样优化的,凭借这份《数据结构与算法》核心文档

热门文章

  1. explain ref_什么是MySQL的执行计划(Explain关键字)?
  2. MySQL按时间日期查询表数据做数据统计
  3. Windows启动MYSQL的两种方式
  4. 如何做一个基于微信共享停车位小程序系统毕业设计毕设作品
  5. 支付宝和手机QQ春节红包热战正酣,百度终于出手了
  6. 如何成为一名自由职业的翻译
  7. python中elif语句_Python学习笔记控制流语句之elif语句
  8. 新手学编程必会的100个代码_初学编程100个代码
  9. 南开20春学期大学计算机基础在线作业,【南开】20春学期《大学计算机基础》在线作业-复习资料附答案1...
  10. 修改idea窗体背景颜色