前言
此文章将告诉大家如何解决Android开发时的报错:CLEARTEXT communication to XX not permitted by network security policy
这个错误提示表明你的应用尝试使用不加密的HTTP(即明文通信)与指定域名进行通信,但被网络安全性策略阻止了。从Android 9(API级别28)开始,默认情况下,应用程序被禁止进行明文通信,这是为了提高应用程序和用户数据的安全性,下文将提供对应的解决办法
文章目录
关注wx公众号ZhillerDev,最新的移动端开发及学习资料哦~
感谢您关注,个人将快马加鞭为大家提供更优质的文章与资源!
点击前往wx观看本文章
网络请求错误解决
方案一:改为使用https请求
即日后使用okhttp或者任意一个网络请求框架进行网络请求时,都使用https(这样可以最大限度的保障安全性);
方案二:尝试降低API级别(但不推荐这样做)
目前API级别已经更新到API35,而https强制校验规则出现于API28及以上,过低的Android版本可能导致兼容性问题,所以不推荐采用此方法!
方案三:使用 network_security_config.xml 文件配置
首先在指定路径下创建文件 res/xml/network_security_config.xml,并填写以下内容,直接告诉Android不要强制检测https,并且允许所有http请求通过!
<?xml version ="1.0" encoding ="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
然后在 AndroidManifest.xml 里面全局启用此配置文件即可生效~
<application
android:icon="@mipmap/ic_launcher"
android:networkSecurityConfig="@xml/network_security_config">
...
</application>
方案四:直接在 AndroidManifest.xml 文件内关闭https强制校验
你只需在AndroidManifest.xml的application标签下添加指定配置 android:usesCleartextTraffic 即可:
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:usesCleartextTraffic="true">
...
</application>
总结
此文章告诉大家如何解决使用okhttp或者任意一个网络请求框架在请求后端API时,因为接口时http导致请求失败的问题!
感谢您的观看~