Android应用连接NodeJS/MongoDB服务器:明文通信权限问题求助
解决Android CLEARTEXT通信被禁止的问题
核心错误修正
你的network-security-config配置存在关键问题:将cleartextTrafficPermitted设为false,直接禁止了指定域名的明文通信,需要改为true才能允许localhost/10.0.2.2的明文请求。
正确的网络安全配置
修改res/xml/network_security_config.xml内容如下:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">localhost</domain> <domain includeSubdomains="true">10.0.2.2</domain> <!-- Android模拟器映射本地主机的专用地址 --> </domain-config> </network-security-config>
关联配置到Manifest
确保在AndroidManifest.xml的<application>标签中同时配置以下两项:
android:networkSecurityConfig="@xml/network_security_config" android:usesCleartextTraffic="true"
注:Android 8.1+只是默认全局禁止明文通信,但针对特定域名单独开启明文是完全合规且有效的,并非官网所说的配置停用,只是默认规则变更。
额外排查要点
- 确认NodeJS服务器正常运行,且端口与Retrofit的BaseUrl一致(例如
http://10.0.2.2:3000/) - 真机调试时,替换
10.0.2.2为电脑的局域网IP,同时确保手机与电脑在同一Wi-Fi下 - 检查Retrofit实例的BaseUrl是否拼写正确,不要遗漏
http://前缀
内容的提问来源于stack exchange,提问作者Sathwik Gumpina
相关产品推荐
相关产品推荐

