Android 9.0 上的所有应用程序默认都使用https。
使用HttpUrlConnection进行http请求会出现以下异常:
W/System.err: java.io.IOException: Cleartext HTTP traffic to ** not permitted.
使用OKHttp请求出现:
W/System.err: java.net.UnknownServiceException: CLEARTEXT communication to ** not permitted by network security policy.
有以下三种解决方案:
1.APP改用https请求(需要服务器支持)。
2.targetSdkVersion 降到27以下(包含27)。
3.根据 Android的网络安全性配置 自定义其网络安全设置。
在res目录下新建xml文件夹,创建xml文件network_security_config.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>
在清单文件AndroidManifest.xml的application标签里面设置networkSecurityConfig属性如下:
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
</application>
网友评论