在android9.0以上由于安全性高了,所有不做处理http不能使用,如果想要使用http请求的,有以下3种解决方法
1.最简单的方法降级targetSdkVersion的版本
将 targetSdkVersion 将到27或27以下
2.服务器请求不管是正式环境还是测试环境,把http改为https (推荐使用,https的安全行高)
3.兼容http请求
用Retrofit请求网络报这个错CLEARTEXT communication to host not permitted by network
由于 Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。
如果当前应用的请求是 htttp 请求,而非 https ,这样就会导系统禁止当前应用进行该请求,如果 WebView 的 url 用 http 协议,同样会出现加载失败,https 不受影响。
为此,OkHttp3 做了检查,所以如果使用了明文流量,默认情况下,在 Android P 版本 OkHttp3 就抛出异常: CLEARTEXT communication to " + host + " not permitted by network security policy
if (!Platform.get().isCleartextTrafficPermitted(host)) {
throw new RouteException(new UnknownServiceException(
"CLEARTEXT communication to " + host + " not permitted by network security policy"));
}
(1):在清单文件中设置networkSecurityConfig属性
<manifest ... >
<application
android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>
2)在res/xml文件夹下创建network_security_config.xml
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>