问题描述
在写Android的时候,模拟器上好好的,一下载到真机上就发现所有的网络请求都失败了,原因是为安全起见,在Android 9 以后都无法使用http协议的接口了。
解决方案
- 我们可以写个自定义的网络安全配置文件去覆盖掉原来的。
在/res/xml
文件夹下创建一个名字任意的xml文件(没有/res/xml
文件夹就手动创建一个)
在文件中写入
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
- 在
AndroidMainfest.xml
配置文件中引用该配置。
在application
标签中添加属性android:networkSecurityConfig
去引用我们刚刚写的配置文件
<application
android:networkSecurityConfig="@xml/network_security_config">
最后,重新打包apk,安装到真机上,就可以发现http接口可以访问了。