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

Flutter真机调试连接本地Django API报Connection timed out错误

Flutter连接局域网Django REST API超时排查与解决

按以下优先级排查,覆盖绝大多数同场景问题:

1. 优先排查Django服务配置

默认启动的Django服务仅允许本机访问,外部设备无法连通:

  • 启动服务时必须绑定0.0.0.0地址,不要直接执行python manage.py runserver,正确启动命令是python manage.py runserver 0.0.0.0:8000
  • 打开Django项目的settings.py,在ALLOWED_HOSTS配置中添加当前笔记本的局域网IP,临时测试可以直接设为ALLOWED_HOSTS = ["*"],测通后再按需收紧访问权限。

2. 排查基础网络连通性

先跳过Flutter代码,验证网络层是否通畅:

  • 确认手机和笔记本接入的是关闭了AP隔离的同一局域网:很多家用路由器默认开启AP隔离,或是将2.4G、5G WiFi划分为不同子网,设备之间无法互访,去路由器后台关闭AP隔离功能即可。
  • 暂时关闭笔记本的系统防火墙、第三方安全软件的网络防护功能,这类软件默认会拦截外部设备对本地端口的入站访问。
  • 用手机自带浏览器直接访问http://192.168.1.141:8000/api/users,如果浏览器都打不开,问题和Flutter无关,继续排查网络和服务配置即可;如果浏览器能正常返回内容,再往下查Flutter侧问题。
  • 确认笔记本的192.168.1.141地址没有变动,家用路由器分配的动态IP可能在设备重启后变化。

3. 排查Flutter端平台限制

  • 如果是Android真机/模拟器调试:Android 9及以上版本默认禁止明文HTTP请求,当前用的是http协议,需要在android/app/src/main/AndroidManifest.xml的<application>标签下添加属性android:usesCleartextTraffic="true",允许明文流量传输。
  • 如果是用Android模拟器调试:模拟器自身的127.0.0.1指向模拟器本身,访问宿主机服务需要把请求地址换成10.0.2.2:8000,不能用局域网IP;iOS模拟器用局域网IP或者localhost都可以正常访问。
  • 如果是iOS调试:iOS 14+访问本地网络需要在Info.plist里添加本地网络权限申请,否则请求会被系统直接拦截。

额外代码问题

贴出的代码存在一个逻辑bug:函数定义传入的参数是int comp,但请求body里用的是未定义的id_user变量,这个问题不会触发连接超时,但连通性修复后会直接报语法错,记得同步修正。

注:报错信息里的port=54486是手机发起请求时随机分配的源端口,不是服务端端口,不需要针对这个端口做配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:15:42