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

Flutter连接PHP MySQL数据库遇Connection refused错误,Postman可正常访问

Flutter连接PHP后端出现Connection Refused但Postman正常的解决方案

问题描述

Flutter应用调用PHP后端接口时抛出Connection refused异常,但通过Postman测试同一接口完全正常,相关Crud类代码如下:

import 'dart:convert';
import 'package:dartz/dartz.dart';
import 'package:ecommercegetx/core/class/statusrequest.dart';
import 'package:ecommercegetx/core/functions/checkinternet.dart';
import 'package:http/http.dart' as http;

class Crud {
  Future<Either<StatusRequest, Map>> postData(String linkurl, Map data) async {
      var check = await checkInternet();
      print("###################################$check");
      print("###################################1$linkurl");
      print("###################################2$data");
      if (await checkInternet()) {
        print("checkedf");
        var response = await http.post(Uri.parse(linkurl), body: data);
        print("########################----33333333$response");
        if (response.statusCode == 200 || response.statusCode == 201) {
          Map responsebody = jsonDecode(response.body);
          return Right(responsebody);
        } else {
          return const Left(StatusRequest.serverfailure);
        }
      } else {
        return const Left(StatusRequest.offlinefailure);
      }
    }
}

常见排查方向及解决办法

  • 本地服务器地址错误
    若在本地运行PHP服务器(如XAMPP/WAMP),Flutter模拟器/真机无法直接通过localhost或127.0.0.1访问:

    • 安卓模拟器:替换为http://10.0.2.2:端口号(10.0.2.2是模拟器映射到主机的回环地址)
    • iOS模拟器:可直接用localhost,但真机需使用主机的局域网IP
    • 真机测试:确保设备和主机在同一局域网,使用主机的局域网IP(如http://192.168.1.100:80)
  • 服务器绑定地址限制
    检查PHP服务器配置(如Apache的httpd.conf),确保监听地址为0.0.0.0而非127.0.0.1,允许局域网设备访问:

    Listen 0.0.0.0:80
    
  • 防火墙/端口拦截
    主机防火墙可能阻止了Flutter设备对PHP服务器端口的访问,可临时关闭防火墙测试,或在防火墙上添加对应端口的入站规则(如80、8080等)。

  • 安卓HTTP明文请求限制
    若后端接口使用HTTP而非HTTPS,安卓9及以上默认禁止明文网络请求,需在android/app/src/main/AndroidManifest.xml中添加配置:

    <application
        ...
        android:usesCleartextTraffic="true">
        ...
    </application>
    
  • 请求参数/格式不一致
    确认Flutter的请求参数和Postman完全匹配:

    • 检查data中的键名是否和后端接口要求的拼写、大小写完全一致
    • 核对请求Content-Type:Postman若使用form-data,Flutter默认是application/x-www-form-urlencoded,若后端仅接受form-data,需调整请求头和参数格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:44:55