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

如何在Dart中正确使用http.get获取API数据?

修正Dart http请求的async/await问题

你的问题核心是没有正确处理异步操作:http.get()方法返回的是Future<http.Response>,这是一个异步任务的占位符,直接赋值给response的话,你拿到的不是实际的响应数据,而是这个Future对象,所以会出现错误或打印Instance of 'Future'。

下面是修正后的完整代码:

import 'dart:convert';
import 'package:http/http.dart' as http;

// 添加async关键字,标记为异步函数
Future<void> fetchData() async {
  try {
    // 用await等待异步请求完成,拿到实际的Response对象
    final response = await http.get(Uri.parse('https://api.example.com/data'));
    
    // 建议先检查响应状态码,确保请求成功
    if (response.statusCode == 200) {
      final data = jsonDecode(response.body);
      print(data);
    } else {
      print('请求失败,状态码: ${response.statusCode}');
    }
  } catch (e) {
    print('请求出错: $e');
  }
}

void main() {
  fetchData();
}

关键改动说明:

  • 在fetchData函数声明后添加async,告诉Dart这是一个异步函数,内部可以使用await
  • 在http.get前添加await,暂停函数执行直到异步请求完成,获取到真实的http.Response实例
  • 增加了状态码检查,避免在请求失败(比如404、500)时解析无效的JSON内容导致额外错误

内容的提问来源于stack exchange,提问作者Amaal.Psau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:47:51