React Native对接SpringBoot后端出现Axios Network Error求助
解决React Native真机USB测试时Axios连接Spring Boot后端的网络错误
1. 先修正本地地址访问逻辑
真机通过USB调试时,代码里的localhost指向的是手机自身,而非运行Spring Boot服务的电脑。必须把请求URL替换成电脑的局域网IP地址,比如http://192.168.1.100:8095/users/signin。
- 查看电脑局域网IP:
- Windows:打开命令提示符输入
ipconfig,找到当前网络适配器的IPv4地址 - Mac/Linux:终端输入
ifconfig或ip addr,找到对应网卡的inet地址
- Windows:打开命令提示符输入
- 务必保证手机和电脑连接在同一个Wi-Fi网络下,USB仅作为调试通道,网络请求实际走Wi-Fi。
2. 确保后端服务允许局域网访问
- 在Spring Boot配置文件(
application.properties/application.yml)中添加server.address=0.0.0.0,让服务绑定到所有可用网卡,而非仅本地回环地址(127.0.0.1)。 - 关闭电脑防火墙,或给8095端口添加入站规则,避免防火墙拦截手机的请求。
3. 排查Axios请求本身的问题
- 先验证后端接口可用性:用手机版Postman或网络工具直接访问
http://你的电脑IP:8095/users/signin,确认接口能正常响应。如果这一步失败,说明问题出在网络或后端配置,和React Native无关。 - 开启Axios日志,打印完整请求和错误信息,定位具体问题:
// 在Axios初始化处添加拦截器 axios.interceptors.request.use(req => { console.log('请求详情:', req.url, req.headers, req.data); return req; }); axios.interceptors.response.use( res => res, err => { console.log('错误详情:', err.message, err.response?.status, err.config); return Promise.reject(err); } ); - 检查请求参数:登录接口的请求体字段要和后端
@RequestBody接收的DTO完全匹配,比如后端要求username和password,前端不能传userName或pwd。
4. 验证平台配置是否生效
- Android:确认
AndroidManifest.xml的<application>标签内已正确添加android:usesCleartextTraffic="true",无拼写错误,修改后重启APP和Metro服务。 - iOS:
NSAllowsArbitraryLoads必须放在NSAppTransportSecurity字典下,正确的Info.plist配置如下:
修改后需重新编译iOS项目。<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
内容的提问来源于stack exchange,提问作者Butterfly
相关产品推荐
相关产品推荐

