Qt for Android(17) —— Android Q 适配之Http请求

这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战

  
升级android 10 后发现项目的Http请求竟然失败了,经过查阅资料,发现在android9.0以上由于安全性高了,,所有应用都使用HTTPS,OkHttp3 做了检查,所以如果使用了明文流量,默认情况下,在 Android 9.0 版本 OkHttp3 就抛出异常: CLEARTEXT communication to " + host + " not permitted by network security policy,如果想要使用http请求的,有以下3种解决方法:

1、降级targetSdkVersion的版本未27以下,但是这会导致你的设备又无法运行在android 10 上了,因此相当于没说。

2、在manifest.xml文件的application标签下添加android:usesCleartextTraffic="true",它的作用是指示应用程序是否打算使用明文网络流量,例如明文HTTP,并忽略掉Https证书。

请添加图片描述

android:usesCleartextTraffic 指示应用程序是否打算使用明文网络流量,例如明文HTTP。目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“ false”。当属性设置为“ false”时,平台组件将拒绝应用程序使用明文流量的请求。避免明文通信的主要原因是缺乏机密性,真实性和防篡改保护;网络攻击者可以窃听所传输的数据,并且还可以对其进行修改而不会被检测到。

还需要注意一点的是,如果没有android:usesCleartextTraffic="true",GooglePlay是不允许上架APK的。

3、在res/xml文件夹下创建network_security_config.xml

<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="https://juejin.cn/post/system" />
        </trust-anchors>
    </base-config>
</network-security-config>

复制代码

然后在Application标签下新增属性:android:networkSecurityConfig="@xml/network_security_config"

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享