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

React Native安卓模拟器中Fetch请求不稳定问题求助

React Native安卓模拟器网络请求不稳定问题排查方案

针对你遇到的安卓模拟器调用接口频繁出现「Network Error」(仅5%成功率)、真机100%正常的问题,结合RN开发者常见的模拟器网络坑,给出以下实用排查方向:

1. 替换localhost为模拟器专用IP地址

安卓模拟器中的localhost指向模拟器自身,而非你的本地开发服务器。需根据模拟器类型替换:

  • Android Studio自带模拟器:使用10.0.2.2
  • Genymotion模拟器:使用10.0.3.2
    修改代码中的HOST常量:
const HOST = "10.0.2.2"; // 适配Android Studio模拟器

2. 修复axios的Cookie携带配置

你注释掉了withCredentials: true,在跨域请求(模拟器访问本地服务属于跨域)场景下,必须开启该选项才能正确携带Cookie,否则会因身份验证失败触发网络错误:

const attendanRes = await axios.post(
  `http://${HOST}:${PORT}/hr_attendance/systray_check_in_out`,
  locData,
  {
    withCredentials: true, // 取消注释并开启
    headers: {
      "Content-Type": "application/json",
      Cookie: sessionCookie,
      "Accept": "application/json",
    },
  }
);

3. 处理Session Cookie的格式问题

authRes.headers.get('set-cookie')可能返回包含多个Cookie属性的字符串(带;分隔),直接传递会导致格式错误。建议只提取核心的Cookie键值对:

const sessionCookie = authRes.headers.get('set-cookie')?.split(';')[0];
if (!sessionCookie)
  throw new Error("Session ID couldn't be used! Unable to find it in headers");

4. 检查电脑防火墙设置

确保本地开发服务器的8069端口允许模拟器的入站请求:

  • 临时关闭电脑防火墙测试,若问题解决,添加8069端口的允许规则
  • 确认路由器/网关没有拦截模拟器的网络请求

5. 重置模拟器网络配置

模拟器的网络缓存或配置异常可能导致请求不稳定:

  • 打开模拟器「设置」-「网络和互联网」-「重置网络设置」
  • 重启模拟器和本地开发服务器

6. 排查RN版本与模拟器兼容性

部分React Native版本在特定安卓模拟器版本中存在网络请求bug:

  • 尝试升级React Native到最新稳定版
  • 切换模拟器的安卓系统版本(比如从Android 13换到Android 12测试)

内容的提问来源于stack exchange,提问作者Kunal Rout Bhai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:19:57