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

Flutter应用Android端HTTP请求超时但浏览器端正常的原因与解决

问题原因分析

核心是Android设备/模拟器与Web端对localhost的解析逻辑不同:

  • Flutter Web运行在浏览器中,localhost直接指向运行Node服务器的本机,因此能正常建立连接。
  • Android模拟器的localhost指的是模拟器自身系统,而非宿主机器;真机用localhost也无法定位到同一局域网内的服务器,最终导致请求超时。
    你的网络安全配置已经允许明文HTTP流量,所以并非权限或明文限制导致的问题。
解决方法

1. 适配Android模拟器

将请求的baseUrl中的localhost替换为10.0.2.2——这是Android模拟器官方规定的、用于映射宿主机器localhost的特殊IP地址。

示例修改:

// 原配置
// const baseUrl = 'http://localhost:3000';
// 修改后
const baseUrl = 'http://10.0.2.2:3000';

2. 适配Android真机

  • 确保手机和运行Node服务器的电脑处于同一Wi-Fi局域网
  • 查找电脑的局域网IP地址:Windows用ipconfig命令,macOS/Linux用ifconfig或ip addr命令,比如得到192.168.1.105
  • 将baseUrl替换为该局域网IP:
const baseUrl = 'http://192.168.1.105:3000';

3. 调整Node服务器绑定地址

确保Node服务器监听0.0.0.0而非仅localhost,这样才能允许外部设备访问:

// 错误示例:仅绑定localhost,外部设备无法访问
// app.listen(3000, 'localhost', () => {...});

// 正确示例:绑定所有网卡,允许外部访问
app.listen(3000, '0.0.0.0', () => {
  console.log('Server running on port 3000');
});

4. 二次验证网络配置(可选)

虽然你的现有配置已经满足明文流量要求,但可以确认network_security_config.xml无语法错误,同时AndroidManifest.xml中的android:usesCleartextTraffic="true"已正确应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:45:01