相关文章推荐

官方说法:

Android致力于保护用户们的设备和数据安全。我们保证数据安全的方法之一是保护所有进入或离开Android设备的数据在传输中使用传输层安全性(TLS)。正如我们在Android P开发人员预览中所宣布的那样,我们通过阻止针对Android P的应用程序默认允许未加密的连接来进一步改进这些保护。这是我们多年来为更好地保护Android用户而做出的各种更改。为了防止意外的未加密连接,我们android:usesCleartextTraffic在Android Marshmallow中引入了manifest属性。在Android Nougat中,我们通过创建Network Security Config功能扩展了该属性,该功能允许应用程序指示他们不打算在没有加密的情况下发送网络流量。在Android Nougat和Oreo中,我们仍然允许明文连接。

所以,后续我们在新建Android项目或者升级Android项目 API版本(targetSdkVersion),当选择27或者27以上时候,就会出现http请求失效的情况

1、配置允许明文通信域

res/xml/network_security_config.xml:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">example.com</domain>
        <trust-anchors>
            <certificates src="@raw/my_ca"/>
        </trust-anchors>
        <domain-config cleartextTrafficPermitted="false">
            <domain includeSubdomains="true">secure.example.com</domain>
        </domain-config>
    </domain-config>
</network-security-config>

2、或者直接在manifest文件里开启明文网络支持(最简单方法)

<application
    android:usesCleartextTraffic="true"

android:usesCleartextTraffic 作用:

Indicates whether the app intends to use cleartext network traffic, such as cleartext HTTP

记录一下Android p上访问http失败 Android P上全面禁止了非安全的http链接,如果要使用非加密连接,需要配置network security config。 步骤如下: 1、在res/xml下新建network security config文件,名字任意,可以叫做network_security_config.xml <network-security-config&g... 学习第一行代码第二版第14章时,在第二阶段“完成遍历省市县三级列表的功能”时一直无法完成,报错android:usesCleartextTraffic 指示应用程序是否打算使用明文网络流量,例如明文HTTP。目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“ false”。 android:usesCleartextTraffic 指示应用程序是否打算使用明文网络流量,例如明文HTTP。目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“ false”。 当属性设置为“ false”时,平台组件(例如,HTTP和FTP堆栈,DownloadManager和MediaPlayer)将拒绝应用程序使用明文流量的... 在manifest 中application节点添加 android:usesCleartextTraffic=“true” android:usesCleartextTraffic 指示应用程序是否打算使用明文网络流量,例如明文HTTP。目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“
 
推荐文章