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
相关产品推荐
相关产品推荐

