Flutter HTTP请求 #

一、http包 #

1.1 安装 #

yaml
dependencies:
  http: ^1.1.0

1.2 GET请求 #

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

Future<void> fetchData() async {
  final response = await http.get(
    Uri.parse('https://api.example.com/data'),
  );
  
  if (response.statusCode == 200) {
    print(response.body);
  } else {
    throw Exception('Failed to load data');
  }
}

1.3 POST请求 #

dart
Future<void> postData() async {
  final response = await http.post(
    Uri.parse('https://api.example.com/users'),
    headers: {'Content-Type': 'application/json'},
    body: jsonEncode({'name': 'John', 'email': 'john@example.com'}),
  );
}

二、dio库 #

2.1 安装 #

yaml
dependencies:
  dio: ^5.4.0

2.2 基本用法 #

dart
final dio = Dio();

Future<void> fetchData() async {
  try {
    final response = await dio.get('https://api.example.com/data');
    print(response.data);
  } catch (e) {
    print(e);
  }
}

2.3 拦截器 #

dart
dio.interceptors.add(InterceptorsWrapper(
  onRequest: (options, handler) {
    options.headers['Authorization'] = 'Bearer token';
    return handler.next(options);
  },
  onResponse: (response, handler) {
    return handler.next(response);
  },
  onError: (error, handler) {
    return handler.next(error);
  },
));

三、总结 #

3.1 库对比 #

特点
http 简单轻量
dio 功能丰富

3.2 下一步 #

让我们学习 JSON解析

最后更新:2026-03-28