建议使用OkHttp 日志拦截器监控网络请求的完整流程,快速定位问题根源。
查看日志,发现有一条错误信息:“java.net.UnknownServiceException: CLEARTEXT communication to (your ip) not permitted by network security policy”。这和安全策略有关,涉及明文通信的问题。我记得Android从某个版本开始默认禁止使用HTTP明文传输,必须使用HTTPS。但我的后端目前使用的是HTTP,没有启用HTTPS,这是问题所在。
原因分析
Android 9 (API 28) 及以上版本默认禁止明文通信(HTTP),要求使用 HTTPS。
你的后端地址 http://your ip:8080 未配置 HTTPS,导致请求被系统安全策略拦截。
解决方案
方法 1:允许明文通信(仅限调试环境)
创建网络安全配置文件
在 res/xml 目录下新建 network_security_config.xml,内容如下:
xml
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">10.99.124.102</domain> </domain-config> </network-security-config>
在 AndroidManifest.xml 中引用配置
在
xml
<application ... android:networkSecurityConfig="@xml/network_security_config"> <!-- 其他配置 --> </application>