如何将Flutter应用与本地Django服务器连接?连接被拒绝问题求助
Flutter 连接本地Django服务器失败的解决方法
我在本地主机8000端口运行了Django服务器(地址:http://127.0.0.1:8000),开发Flutter应用时无法连接到该服务器,已尝试以下三种方式均失败:
- 尝试连接电脑的私有IP地址,但未成功:
Future<void> test() async { print('1'); final url = Uri.parse('http://192.168.1.42:8000/users/'); final response = await http.get(url); print(response); print('2'); }
- 尝试连接localhost,出现连接拒绝错误:
Future<void> test() async { print('1'); final url = Uri.parse('http://localhost:8000/users/'); final response = await http.get(url); print(response); print('2'); }
E/flutter (27014): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Connection refused
- 尝试连接localhost等效地址127.0.0.1,出现相同的连接拒绝错误:
Future<void> test() async { print('1'); final url = Uri.parse('http://127.0.0.1:8000/users/'); final response = await http.get(url); print(response); print('2'); }
解决步骤:
- 修改Django服务器监听地址
默认Django仅监听本地回环地址(127.0.0.1),其他设备无法访问。启动服务器时执行以下命令,让其监听所有网络接口:
python manage.py runserver 0.0.0.0:8000
确保设备处于同一局域网
Flutter运行的模拟器/真机必须和运行Django的电脑连接同一WiFi或有线网络。根据设备类型选择正确的连接地址
- Android模拟器:模拟器的
localhost指向自身,需使用特殊映射地址10.0.2.2访问主机服务:final url = Uri.parse('http://10.0.2.2:8000/users/'); - iOS模拟器:可直接使用
localhost或127.0.0.1,若无效则替换为电脑的私有IP。 - 真机:直接使用电脑的私有IP(如
192.168.1.42),同时确保电脑防火墙未拦截8000端口。
检查防火墙设置
临时关闭电脑防火墙,或在防火墙规则中添加允许8000端口的入站连接权限。验证服务器可访问性
用同一局域网内的手机浏览器访问http://你的电脑私有IP:8000/users/,若能正常返回数据,说明服务器配置正常,问题出在Flutter端;若无法访问,重新检查Django启动命令和防火墙设置。
内容的提问来源于stack exchange,提问作者Mikelenjilo
相关产品推荐
相关产品推荐

