Flutter网络请求库对比

在Flutter中常见的网络请求方式有三种:HttpClient、http库、dio库;
其中HttpClient是dart自带的请求类;
http 是 Dart 官方提供的另一个网络请求类;
dio库是flutter官方提供的三方库

1.HttpClient

HttpClient是dart自带的请求类,在io包中,实现了基本的网络请求相关的操作。
网络调用通常遵循如下步骤:

  • 创建 client.
  • 构造 Uri.
  • 发起请求, 等待请求,同时您也可以配置请求headers、 body。
  • 关闭请求, 等待响应.
  • 解码响应的内容.
void requestNetwork() async {
  // 1.创建HttpClient对象
  final httpClient = HttpClient();
 
  // 2.构建请求的uri
  final uri = Uri.parse("http://123.207.32.32:8000/api/v1/recommend");
 
  // 3.构建请求
  final request = await httpClient.getUrl(uri);
 
  // 4.发送请求,必须
  final response = await request.close();
  if (response.statusCode == HttpStatus.ok) {
    print(await response.transform(utf8.decoder).join());
  } else {
    print(response.statusCode);
  }
}

2.http

http 是 Dart 官方提供的另一个网络请求类,相比于 HttpClient,易用性提升了不少。
但是,没有默认集成到Dart的SDK中,所以我们需要先在pubspec中依赖它:

  http: ^0.13.5              #网络请求

代码示例:

import 'package:http/http.dart' as http;
 
void httpManager() async {
  // 1.创建Client
  final client = http.Client();
 
  // 2.构建uri
  final url = Uri.parse("http://www.baidu.com");
 
  // 3.发送请求
  final response = await client.get(url);
 
  // 4.获取结果
  if (response.statusCode == HttpStatus.ok) {
    print(response.body);
  } else {
    print(response.statusCode);
  }
}

pub.dev: https://pub.flutter-io.cn/packages/http/score
6.1k赞
发布者:dart.dev

github:https://github.com/dart-lang/http/tree/master/pkgs/http
1k赞

2.dio

dio 是一个强大的 Dart HTTP 请求库,支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时以及自定义适配器等。

添加依赖

  dio: ^5.0.0

代码示例:

import 'package:dio/dio.dart';
 
void httpManager() async {
  // 1.创建Dio请求对象
  final dio = Dio();
 
  // 2.发送网络请求
  final response = await dio.get("http://www.baidu.com");
 
  // 3.打印请求结果
  if (response.statusCode == HttpStatus.ok) {
    print(response.data);
  } else {
    print("请求失败:${response.statusCode}");
  }
}

pub.dev: https://pub.flutter-io.cn/packages/dio/score
5.4k赞
发布者:flutter.cn

github:https://github.com/cfug/dio/blob/main/dio
11k赞

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容