【Android报错】java.io.IOException: Cleartext HTTP traffic to …not permitted完美解决
话不多说
上报错:
System.err: java.io.IOException: Cleartext HTTP traffic to img95.699pic.com not permittedat com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458)at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)at com.example.gundong.MainActivity.getURLimage(MainActivity.java:163)at com.example.gundong.MainActivity$6$1.run(MainActivity.java:141)at java.lang.Thread.run(Thread.java:764)
W/System.err: java.io.IOException: Cleartext HTTP traffic to img95.699pic.com not permittedat com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)
报错大致意思就是:网址的请求不被允许。
为什么会出现这样的报错呢?
检查网络连接 -------> 网络正常
检查AndroidManifest.xml的网络请求配置 --------> 已配置允许
配置代码:
<uses-permission android:name="android.permission.INTERNET" />
【报错原因】
Android 9.0是默认禁止所有http请求的,需要在代码中设置如以下代码才可以正常进行网络请求
android:usesCleartextTraffic="true"
在AndroidManifest.xml中添加,效果图:
添加后再运行就不会报错了
完美解决
如果是更高的版本,以上方法不能解决,就要通过网络配置文件解决
增加network_security_config.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config><base-config cleartextTrafficPermitted="true"/>
</network-security-config>
再在AndroidManifest.xml中的application中引用该网络配置文件如下:
<application.....android:networkSecurityConfig="@xml/network_security_config".......>
再运行就不会报错了