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

API在Postman中正常运行但Flutter中出现连接拒绝问题

排查思路与解决方案

核心问题解析

Postman能正常请求http://127.0.0.1:8000/api/login是因为它运行在你的电脑本地,直接指向服务器;但Flutter运行在模拟器/真机时,127.0.0.1会指向设备自身而非你的电脑,这是连接拒绝的最常见原因。


1. 替换本地IP为电脑局域网IP

  • 查看电脑的局域网IP:Windows执行ipconfig,Mac/Linux执行ifconfig或ip addr,找到类似192.168.x.x的地址
  • 修改代码中的URL:
    var url = Uri.parse('http://192.168.x.x:8000/api/login');
    
  • 确保设备(模拟器/真机)和电脑处于同一Wi-Fi网络

2. 调整服务器绑定地址

多数本地服务器默认仅绑定127.0.0.1,仅允许本机访问,需改为绑定0.0.0.0开放局域网访问:

  • Django:启动命令改为python manage.py runserver 0.0.0.0:8000
  • Node.js:将监听地址设为0.0.0.0而非127.0.0.1
  • 其他框架同理,找到服务器启动的绑定配置修改

3. Android模拟器专属快捷IP

Android模拟器内置了映射宿主机本地IP的特殊地址10.0.2.2,直接替换即可:

var url = Uri.parse('http://10.0.2.2:8000/api/login');

无需查找局域网IP,适合快速测试。

4. 检查防火墙规则

  • 临时关闭电脑防火墙测试,若能连接,说明防火墙拦截了8000端口请求,需添加入站规则允许该端口的局域网访问
  • 确认服务器所在的杀毒软件、安全工具没有拦截端口

5. 对齐请求格式与Postman

即便Postman能访问,Flutter的请求格式可能与Postman不符:

  • 你当前用jsonEncode(map)发送JSON格式,但Postman可能使用form-data或x-www-form-urlencoded
  • 若服务器期望表单格式,修改请求代码:
    var response = await http.post(url,
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: map
    );
    
  • 对比Postman的请求头、参数格式,确保Flutter请求完全一致

6. 真机测试额外配置

  • 确认手机与电脑在同一Wi-Fi,且Wi-Fi未开启设备隔离模式
  • 检查手机应用权限,确保Flutter APP已获得网络访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:35:26