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

React Native Expo APK无法请求本地Python Flask服务器的解决方法

Expo 应用连接本地 Flask 服务器实现指南

1. 获取笔记本的本地WiFi IP地址

首先确定笔记本在当前WiFi下的局域网IP,这是手机访问服务器的核心地址:

  • Windows:打开命令提示符,输入ipconfig,找到「无线局域网适配器 WLAN」下的「IPv4地址」,比如192.168.1.105
  • Mac/Linux:打开终端,输入ifconfig(或ip addr),找到WiFi接口(如en0)下的inet地址

2. 配置Flask服务器允许外部访问

Flask默认仅监听本地回环地址(127.0.0.1),无法被局域网内其他设备访问,必须修改绑定设置:

  • 命令行启动:执行flask run --host=0.0.0.0 --port=5000,0.0.0.0表示监听所有可用网络接口
  • 代码内配置:修改Flask启动逻辑:
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/api/submit-data', methods=['POST'])
    def submit_data():
        # 自定义数据处理逻辑
        return {"status": "success"}
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000, debug=True)
    
  • 防火墙设置:确保笔记本防火墙允许5000端口(或你指定的端口)的入站请求。Windows可在防火墙高级设置中添加「入站规则」开放端口;Mac/Linux可临时关闭防火墙测试,或用ufw allow 5000(Ubuntu)开放端口。

3. 配置Expo应用的API请求

不要使用localhost或127.0.0.1(这指向手机自身),直接用笔记本的局域网IP构建请求地址:

// 示例:用fetch发送POST请求
const submitData = async () => {
  try {
    const response = await fetch('http://192.168.1.105:5000/api/submit-data', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ key: 'value' }),
    });
    const result = await response.json();
    console.log(result);
  } catch (error) {
    console.error('请求失败:', error);
  }
};

4. Android 必要权限与网络配置

网络权限

在Expo项目的app.json中添加网络权限:

{
  "expo": {
    "android": {
      "permissions": ["INTERNET"]
    }
  }
}

允许明文HTTP请求(Android 9+)

Android 9及以上默认禁止明文HTTP请求(仅允许HTTPS),如果你的Flask服务器用的是HTTP,需配置网络安全策略:
在app.json的android字段中添加:

{
  "expo": {
    "android": {
      "networkSecurityConfig": {
        "domainConfigs": [
          {
            "domain": "192.168.1.105", // 替换为你的笔记本IP
            "cleartextTrafficPermitted": true
          }
        ]
      },
      "permissions": ["INTERNET"]
    }
  }
}

重新生成APK后,应用即可向指定IP发送明文HTTP请求。

5. 常见问题排查

  • 先在手机浏览器中访问http://你的笔记本IP:5000,若能打开Flask默认页面,说明网络连通;若打不开,检查WiFi是否同网段、防火墙是否拦截、Flask是否正确绑定0.0.0.0
  • 查看Flask控制台日志,若有请求记录但返回错误,检查API端点逻辑;若无请求记录,说明网络层面未连通
  • 确认手机未连接VPN或代理,这会干扰局域网访问
  • 部分路由器的「访客模式」会隔离设备,确保手机和笔记本连接的是同一个主WiFi网络

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:33:32