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

React Native安卓端Fetch API调用失败求助:iOS正常安卓报错

解决安卓模拟器调用Bubble API出现Network request failed的问题

以下是针对该问题的具体排查和解决思路:

  • 检查安卓模拟器网络连通性
    安卓模拟器的网络可能出现异常,尝试以下操作:

    • 重启模拟器,或在模拟器设置中重置网络连接;
    • 执行adb shell settings put global http_proxy :0命令清除可能存在的代理设置;
    • 用adb shell ping [你的API域名]测试模拟器能否正常解析并访问API服务器。
  • 修正API地址的访问方式
    如果你的Config.API_URL使用的是localhost或电脑本地IP:

    • Android Studio模拟器需要将localhost替换为10.0.2.2(模拟器映射宿主机的默认IP);
    • 若使用Genymotion模拟器,替换为10.0.3.2;
    • 确认API服务器的防火墙规则未限制模拟器所在网络的IP访问。
  • 排查SSL证书问题
    若API使用HTTPS协议,模拟器可能存在证书信任问题:

    • 针对Bubble官方API域名,尝试将模拟器系统更新至Android 10及以上版本,确保证书存储正常;
    • 若使用自签名证书,需在模拟器中手动安装证书,或在React Native项目中配置允许信任该证书。
  • 替换网络请求库测试
    尝试将fetch替换为axios,部分场景下axios的兼容性更好:
    先安装axios:

    npm install axios
    

    改写请求代码:

    import axios from 'axios';
    
    export async function loginResident(email: string, password: string) {
      const item = { email, password };
      const url = `${Config.API_URL}wf/login_resident/${JSON.stringify(item)}`;
      
      try {
        const response = await axios.post(Config.API_URL + 'wf/login_resident', item, {
          headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
            Authorization: `Bearer ${Config.API_KEY}`,
          },
        });
        
        if (response.status === 200) {
          await cache.store(url, response.data);
        }
      } catch (error) {
        console.error('请求错误:', error);
      }
      
      return await cache.get(url);
    }
    
  • 清除模拟器缓存与应用数据

    • 卸载模拟器中的应用;
    • 在AVD管理器中对模拟器执行Wipe Data操作;
    • 重新打包并安装应用,避免旧缓存或配置干扰。
  • 抓取详细错误日志定位问题
    执行adb logcat *:E命令,查看安卓系统层面的错误日志,从中可获取更具体的网络失败原因(如DNS解析失败、连接超时、证书验证错误等),便于精准排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:29:50