You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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地址
  • 务必保证手机和电脑连接在同一个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配置如下:
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    
    修改后需重新编译iOS项目。

内容的提问来源于stack exchange,提问作者Butterfly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:40:15