React Native Expo安卓端Axios报Network Error问题咨询
安卓真机Axios Network Error修复方案
这个报错和你的Axios请求逻辑无关,是安卓真机的网络访问规则、地址映射逻辑和模拟器/iOS端不一致导致的,按以下步骤逐一配置即可解决:
1. 替换为真机可访问的服务地址
localhost是设备自身的本地回环地址,10.0.2.2是安卓模拟器专门做的宿主机映射地址,这两个地址在安卓真机上都指向手机自身,根本访问不到你电脑上跑的8888端口服务:
- 把你的安卓真机和运行后端服务的电脑连接到同一个WiFi局域网,不要跨VLAN、不要一个连有线一个连不同的WiFi。
- 查询电脑在当前局域网下的IPv4地址:Windows系统打开命令提示符执行
ipconfig,找当前活跃WiFi网卡对应的IPv4地址,一般为192.168.x.x格式;Mac系统在设置-网络页面就能直接看到当前连接的局域网IP。 - 将base URL替换为
http://[你查到的局域网IP]:8888,比如电脑IP为192.168.3.16,base URL就设为http://192.168.3.16:8888。
2. 放开安卓HTTP明文请求限制
安卓9(API等级28)及以上版本默认拦截所有非HTTPS的明文请求,你用的8888端口是HTTP协议,会被系统直接掐断连接:
- 打开项目路径下的
android/app/src/main/AndroidManifest.xml文件 - 在根级
<application>标签中添加android:usesCleartextTraffic="true"属性,参考配置:
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:usesCleartextTraffic="true" android:theme="@style/AppTheme"> <!-- 其余原有配置保持不变 --> </application>
- 配置修改后必须重新编译安装安卓包,不要靠热重载更新,原生配置改动热重载不生效。
3. 排查连通性阻塞点
改完上面两步如果还不通,逐一排查两个常见拦截点:
- 确认你的8888端口后端服务绑定的是
0.0.0.0地址,不是只绑定127.0.0.1,如果只绑定回环地址,同局域网其他设备没有权限访问。 - 临时关闭电脑的系统防火墙,或者给8888端口添加入站放行规则,大部分时候防火墙会默认拦截局域网内其他设备对本地端口的访问。
- 验证方式:直接用安卓真机自带的浏览器访问你配置的
http://[局域网IP]:8888地址,如果浏览器能打开对应服务页面,再打开App发请求就不会报Network Error了。
内容的提问来源于stack exchange,提问作者Carlos Craig
相关产品推荐
相关产品推荐

