
Flutter网络请求Dio详解及简单拦截器示例
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本文详细讲解了如何使用Dio在Flutter项目中进行高效的网络请求,并提供了简单的拦截器实现示例。
在Flutter开发中,Dio是一个非常流行的网络请求库。下面是如何使用它封装一个类的示例代码:
首先导入必要的包:
```dart
import package:dio/dio.dart;
import dart:async;
import dart:io;
// 假设存在其他自定义文件 api_domain.dart 和 http_headers.dart
import ./api_domain.dart;
import ./http_headers.dart;
// 如果使用了 shared_preferences,也需要导入它
import package:shared_preferences/shared_preferences.dart;
class DioUtil {
static Dio dio = new Dio();
```
接下来是请求部分的封装和拦截器的设置。这部分代码展示了如何初始化Dio实例以及添加通用配置如基础URL、超时时间等,并且可以加入错误处理逻辑。
```dart
static void init() async {
// 初始化dio,加载基础url和headers
dio.options.baseUrl = ApiDomain.baseApiUrl;
dio.options.connectTimeout = 5000; // 设置连接超时为5秒
dio.options.receiveTimeout = 3000; // 接收响应数据的超时时间设置为3秒
SharedPreferences prefs = await SharedPreferences.getInstance();
String token = prefs.getString(token);
if (token != null) {
dio.options.headers[Authorization] = Bearer $token;
}
// 添加拦截器
dio.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler){
options.headers.addAll(HttpHeaders.common);
return handler.next(options); // 继续请求
},
onResponse: (response,handler) {
return handler.resolve(response);
},
onError: (DioError e,handler) {
if(e.response != null){
print(onError:${e.response.data});
print(${e.response.headers});
print(${e.request.uri});
} else {
// 超时等其他错误
print(连接异常);
}
return handler.reject(e);
},
));
}
```
以上代码提供了一个基本的网络请求工具类,可以方便地在项目中进行HTTP操作。注意根据实际需求调整配置和处理逻辑。
全部评论 (0)


