发布于 

安卓 网络安全策略不允许明文通信

搭建好请求框架设置 baseUrl 开始请求,出现 Toast 报错

1
CLEARTEXT communication to api.xxx.com not permitted by network security policy

原因是因为 Android P 之后限制了未经加密的明文网络流量,所以 OkHTTP3 会抛出该异常。更低的版本没有影响

解决方法 1

使用 HTTPS 安全连接,即在 baseUrl 前添加 https://

前提是目标服务器支持 https 协议

解决方法 2

配置网络安全策略,绕过明文流量限制

res/xml 下新建 network_security_config.xml

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

然后在 AndroidManifest.xmlapplication 节点中添加

1
2
3
<application android:networkSecurityConfig="@xml/network_security_config">
...
</application>