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
相关产品推荐
相关产品推荐

