Android 9.0 http请求解决方案

0.144字数 175阅读 2256

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>

推荐阅读更多精彩内容