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

Flutter无法从PHP API获取数据,浏览器/Postman等客户端正常

Flutter与PHP API互通问题解决方案

Flutter端需调整的配置

  • 添加Android网络权限:在android/app/src/main/AndroidManifest.xml中,于<application>标签上方添加网络权限声明:
    <uses-permission android:name="android.permission.INTERNET"/>
    
    若API使用明文HTTP(非HTTPS),需在<application>标签内添加允许明文流量的配置:
    <application
        ...
        android:usesCleartextTraffic="true">
    
  • 完善请求异常捕获:在fetchUsers方法中加入try-catch块,打印错误详情以定位问题:
    Future<void> fetchUsers() async {
      try {
        final response = await http.get(Uri.parse('你的API地址'));
        print('响应状态码: ${response.statusCode}');
        print('响应内容: ${response.body}');
      } catch (e) {
        print('请求失败原因: $e');
      }
    }
    
  • 修正本地API地址:若PHP服务运行在本地电脑,不要使用localhost,改用电脑的局域网IP(如192.168.1.100)——Android模拟器的localhost指向模拟器自身,而非开发电脑。
  • 设置请求超时:为请求添加超时限制,避免无限阻塞:
    final response = await http.get(Uri.parse('你的API地址'))
        .timeout(const Duration(seconds: 10));
    

PHP API端需检查的配置

  • 返回正确的响应头:确保API输出JSON时设置正确的Content-Type头,避免解析异常:
    header('Content-Type: application/json; charset=utf-8');
    
  • 清理多余输出:检查PHP脚本是否存在额外的空格、注释或echo内容,确保仅输出标准JSON数据。
  • 验证请求方法匹配:确认Flutter使用的请求方法(GET/POST)与API接口的处理逻辑一致。
  • 开放服务器端口:确保PHP服务监听的端口(如80、8080)在Windows防火墙中已开放,允许局域网设备访问。

快速调试步骤

  • 在Android模拟器内置浏览器中直接访问API地址,验证网络连通性。若无法访问,排查IP、端口或防火墙设置;若能访问,聚焦Flutter代码逻辑。
  • 暂时关闭系统或VSCode的代理设置,避免代理拦截请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:35:12