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

Flutter中调用Rest API GET请求失败,报XMLHttpRequest error求助

解决Flutter调用REST API时的XMLHttpRequest Error问题

常见排查方向及解决方法

  • 跨域资源共享(CORS)问题
    这是最常见的诱因。检查API服务器是否配置了正确的CORS规则,允许你的Flutter应用所在域名(或本地调试用的localhost/127.0.0.1)发起请求。若API由你方维护,需在服务器端添加响应头:

    Access-Control-Allow-Origin: * (调试环境可用,生产环境建议指定具体域名)
    Access-Control-Allow-Methods: GET, POST, OPTIONS
    Access-Control-Allow-Headers: Content-Type, Authorization
    

    若API为第三方提供,直接联系对方确认是否开放了你方域名的CORS权限。

  • 请求URL格式问题
    你提供的URL中urn:CardAcctId:Headers.CardAcctId明显是占位符,需要替换为实际的CardAcctId值。比如实际账户ID为123456,URL应改为https://execute-api.us-east-1.amazonaws.com/Card/123456/Retrieve。

  • 网络与代理问题

    • 先用浏览器或Postman测试该GET请求是否能正常返回数据,确认API本身可访问。
    • 本地调试时若使用了代理,检查Flutter代理配置是否正确,或暂时关闭重试请求。
  • HTTP请求库使用问题
    确保使用的http或dio库配置正确,以http库为例,标准GET请求写法:

    import 'package:http/http.dart' as http;
    
    Future<void> fetchCardData() async {
      try {
        final response = await http.get(
          Uri.parse('https://execute-api.us-east-1.amazonaws.com/Card/你的实际CardAcctId/Retrieve'),
          headers: {
            'Content-Type': 'application/json',
            // 添加其他必要请求头
          },
        );
        if (response.statusCode == 200) {
          print(response.body);
          // 处理返回数据
        } else {
          print('请求失败,状态码:${response.statusCode}');
        }
      } catch (e) {
        print('具体错误信息:$e');
      }
    }
    

    同时确认pubspec.yaml已添加对应依赖并执行flutter pub get。

  • SSL证书问题
    若API使用自签名证书,Flutter调试时会拒绝连接。调试环境可临时禁用SSL校验(生产环境严禁使用),以dio库为例:

    import 'package:dio/dio.dart';
    
    Dio dio = Dio();
    dio.options.sslVerification = false;
    

    生产环境务必使用合法的SSL证书。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:35:16