Cleartext HTTP traffic to xxx not permitted解决

概述

       最近在项目开发中遇到了一个问题,我把android项目SDK升级到28,某些高版本的手机会网络请求失败。出现了一下跟网络相关的报错信息。这里可以粘出来看下:

W/System.err: java.io.IOException: Cleartext HTTP traffic to ...com not permitted
W/System.err:     at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:215)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:438)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:197)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:208)

## 问题分析        对于高版本的手机(一般是android8.0以上的手机),为保证用户和设备数据安全,将要求应用程序默认使用加密连接,即HTTPS连接。这意味着有可能会禁止 App 使用所有未加密的http连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议。

问题解决

方案(一):降低项目的targetSdkVersion版本,降到28以下。
                     这样虽然能解决问题,但是会重新适配之前的jar文件和重要的依赖,比较麻烦,不推荐。

方案(二):应用采用https请求。
                    这里做的话比较安全,但是工作量比较大了,服务端客户端都要改,都要调整。

方案(三):1创建并配置网络配置文件。方法比较简单:
                    1.创建一个网络配置文件http_set.xml,放在res / xml文件夹内,内容为



    

                    2.然后在manifest文件配置下application即可



    

    

希望能给大家带来帮助,谢谢!

你可能感兴趣的:(Android应用开发,java)