前言:
最近在开发安卓项目,自己本地搭了一个tomcat服务器挂json文件
项目使用retrofit
来发起网络请求,
因为不是okhttp也不是那个啥httpurl,所以在profiler找不到network监控网络
打断点打了好久才发现以下几个错误
问题引入
java.net.SocketException: socket failed: EPERM (Operation not permitted)
java.net.UnknownServiceException: CLEARTEXT communication to www.httpbin.org not permitted by networ
原因
- 1、Android P(API级别29) 是默认禁止访问http的API的
- 2、AndroidManifest.xml 网络权限没有开启
解决办法
1、禁止掉明文流量请求的检查
在res的xml文件夹中创建 network_security_config.xml
文件

xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
在AndroidManifet.xml中引入这个配置

ini
android:networkSecurityConfig="@xml/network_security_config"
2、为AndroidManifest.xml添加网络权限
进一步配置AndroidManifet.xml文件
ini
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
经本人实践,可以访问http链接了
