Flutter向本地Django发送HTTP请求时遭遇连接拒绝错误求助
Flutter请求本地Django服务报错:连接拒绝(Connection refused)
问题代码
var url = Uri.http('127.0.0.1:8008', '/apis/login', {'q':'{http}', 'phone': userName, 'password': password}); var response = await get(url); var myResponse = jsonDecode(response.body); print(myResponse);
报错信息
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: ClientException with SocketException: Connection refused (OS Error: Connection refused, errno = 111), address = 127.0.0.1, port = 38598, uri=http://127.0.0.1:8008/apis/login?q=%7Bhttp%7D&phone=dslfkslf&password=rrrrrrrrrrrrrrC%3A%5CUsers%5Cgeors%5CAppData%5CLocal%5CPub%5CCache%5Clog%5Cpub_log.txt E/flutter ( 4683): #0 IOClient.send (package:http/src/io_client.dart:154:7)
排查与解决步骤
确认Django服务状态:
检查终端里Django的启动命令python manage.py runserver 127.0.0.1:8008是否正常运行,有无启动报错,确保服务确实监听8008端口。修改Django允许主机配置:
打开项目settings.py,将ALLOWED_HOSTS设置为ALLOWED_HOSTS = ['*'],或添加127.0.0.1、本地局域网IP,避免因主机白名单限制导致连接被拒。模拟器/真机环境替换IP:
若在手机模拟器或真机测试,不能用127.0.0.1(该地址指向模拟器/手机自身),需换成电脑的局域网IP(如192.168.1.100),同时启动Django时监听所有网卡:python manage.py runserver 0.0.0.0:8008,确保同一局域网设备可访问服务。修复请求参数错误:
从报错URL可见,password参数后拼接了本地日志路径C:\Users\geors\AppData\Local\Pub\Cache\log\pub_log.txt,说明password变量被错误赋值,需检查前端获取用户输入的逻辑,确保userName和password为正确的用户输入内容。排查防火墙拦截:
暂时关闭电脑防火墙或杀毒软件,测试是否为安全软件拦截了Flutter与Django的连接。
内容的提问来源于stack exchange,提问作者jabar majidi
相关产品推荐
相关产品推荐

