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

Flutter的http.get请求突然失效,如何排查调试?

Flutter HTTP请求无响应的调试步骤
  • 核对网络权限配置
    分别检查Android和iOS的权限设置:

    • Android:确认AndroidManifest.xml中已添加<uses-permission android:name="android.permission.INTERNET" />;若API为HTTP协议(非HTTPS),需在application标签内补充android:usesCleartextTraffic="true"
    • iOS:在Info.plist中配置NSAppTransportSecurity,可临时将NSAllowsArbitraryLoads设为YES(仅调试用,上线需改为目标域名白名单)
  • 捕获具体错误信息
    不要只捕获笼统错误,打印异常的类型和详细内容,示例代码:

    try {
      final response = await http.get(Uri.parse('你的API地址'));
      print('响应状态码: ${response.statusCode}');
      print('响应内容: ${response.body}');
    } catch (e) {
      print('错误类型: ${e.runtimeType}');
      print('错误详情: $e');
    }
    

    若控制台无输出,可将错误信息写入本地文件,或通过Flutter DevTools查看变量值。

  • 排查代理/VPN干扰
    关闭代理或VPN后重试,若需使用代理,可通过以下命令启动应用:

    flutter run --dart-define=HTTP_PROXY=http://你的代理地址:端口
    
  • 用Flutter DevTools监控网络
    启动DevTools后切换到Network标签,查看请求的完整生命周期:是否成功发送、是否收到响应、响应头和内容是否正常,排查是否存在请求被拦截或解析失败的情况。

  • 对比服务器请求日志
    确认Flutter发送的请求与curl请求完全一致:核对请求头(如User-Agent、Content-Type)、参数、域名,部分服务器会对请求头做校验,Flutter默认请求头可能与curl存在差异。

  • 切换网络环境测试
    切换至手机流量或其他WiFi网络,排除当前局域网防火墙、路由规则的影响。

  • 清理Flutter缓存重启
    执行以下命令清除缓存后重新运行:

    flutter clean
    flutter pub get
    flutter run
    
  • 校验SSL证书(HTTPS场景)
    若API为HTTPS,检查服务器SSL证书是否有效。可临时禁用证书校验测试(仅调试用):

    import 'dart:io';
    
    HttpClient client = HttpClient()
      ..badCertificateCallback = ((X509Certificate cert, String host, int port) => true);
    final request = await client.getUrl(Uri.parse('你的HTTPS地址'));
    final response = await request.close();
    // 读取响应内容
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:15:03