Flutter学习-网络请求
前言:项目中展示的大部分数据都是来自服务器,我们需要向服务器请求数据,并且对他们进行解析展示。
向服务器发出请求就需要用到网络请求相关的知识。
1. 网络请求的方式
在Flutter中常见的网络请求方式有三种:HttpClient、http库、dio库;
1.1 HttpClient的示例
HttpClient是dart自带的请求类,在io包中,实现了基本的网络请求相关的操作。
网络调用通常遵循如下步骤:
- 创建 client.
- 构造 Uri.
- 发起请求, 等待请求,同时您也可以配置请求headers、 body。
- 关闭请求, 等待响应.
- 解码响应的内容.
网络请求案例:
void requestNetwotk() async {
//1. 创建HttpClient的请求实例
final httpClient = HttpClient();
//2.构建请求的URI
// https://httpbin.org/get
// http://123.207.32.32:8000/api/v1/recommend
// https://httpbin.org/post
final uri = Uri.parse("https://httpbin.org/get");
//3.构建请求 返回值类型是 Future<HttpClientRequest> 是一个未来的对象,使用await之后可以使用HttpClientRequest类型来接收
HttpClientRequest request = await httpClient.getUrl(uri);//get请求
//final request = await httpClient.postUrl(uri);//post请求
//4.发送请求
HttpClientResponse response = await request.close();
//判断请求结果
if (response.statusCode == HttpStatus.ok) {
//打印成功结果
print(await response.transform(utf8.decoder).join());
} else {
print(response.statusCode);
}
}
//关闭HttpClient
httpClient.close();
- 代码分析:
- 新建
HttpClient对象,通过 getUrl方法获取HttpClientRequest - 通过
HttpClientRequest.close(),发起Http请求, 获取HttpClientResponse - 判断请求结果根据code码,
response.statusCode来判断 HttpClientResponse是一个Stream对象,通过Utf8Decoder解码,然后join操作符转换成String对象,可以打印出HttpClientResponse的字符串。- 关闭
HttpClient

- 新建
HttpClient虽然可以发送正常的网络请求,但是会暴露过多的细节:
- 比如需要主动关闭request请求,拿到数据后也需要手动的进行字符串解码
- 在开发中,我们一般很多直接面向
HttpClient进行网络请求并不是直接使用HttpClient,而是使用一些库来完成
注意:HttpClient其中还有很多知识,如果大家需要深入了解HttpClient,建议大家多看文档,多找资料学习
1.2 Http库
http 是 Dart 官方提供的另一个网络请求类,相比于 HttpClient,易用性提升了不少。
但是,没有默认集成到Dart的SDK中,所以我们需要先在pubspec中依赖它:
大家如果需要找第三方库:https://pub.dev,直接在这个网站搜索:



-
dev_dependencies: 表示是开发阶段导入,打包app是不会把这下面的依赖打包进去的
-
导入并使用
void requestNeteorkThridHttp() async {
/

本文详细介绍了在Flutter中使用HttpClient、http库、dio库进行网络请求的方法,并演示了如何解析和处理JSON数据,包括本地JSON配置、数据读取与Model对象转换。
最低0.47元/天 解锁文章

2181

被折叠的 条评论
为什么被折叠?



