OKhttp3在Android P(9.0) level 28 及以上版本http请求过程中会出现异常:
CLEARTEXT communication to xxx.xxx.com not permitted by network security policy
这个问题是由于Android P(9.0)开始,限制了明文的网络请求,非加密请求会被系统禁止掉, WebView加载http协议的页面也会出现加载失败,使用https不受影响。
2种解决方式:
方法1.在AndroidManifest清单文件中application节点添加如下属性:
android:usesCleartextTraffic="true"
tools:targetApi="m"
方法2.在res文件夹下创建一个xml文件夹,然后创建一个network_security_config.xml文件,内容如下
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
或者如下
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">请求的网络域名xxx.com</domain>
</domain-config>
</network-security-config>
然后在AndroidManifest清单文件中application节点添加如下属性:
android:networkSecurityConfig="@xml/network_security_config"