我们在上一章回中介绍了"对dio库进行封装"相关的内容,本章回中将介绍 如何使用dio中的拦截器.闲话休提,让我们一起Talk Flutter吧。
概念介绍
我们在本章回中介绍的拦截器主要用来在网络操作过程中获取相关的信息,它可以拦截网络操作过程中的数据,这样有助于开发人员分析和调试程序。在其它网络库中也有拦截器,比如Android平台上的Okhttp和Retrofit都有拦截器。dio
也提供了相应的拦截器,本章回中将介绍如何使用dio提供的拦截器。
使用方法
dio库提供的拦截器简单易用,我们只需要创建一个拦截器对象然后通过dio对象的add()
方法把拦截器添加到dio对象就可以使用拦截器了。相对复杂是的创建dio拦截器,我们需要创建InterceptorsWrapper
类型的对象,该类的构造方法中包含三个可选参数,详细如下:
- onRequest:该参数表示拦截网络操作中与请求操作相关的内容;
- onResponse: 该参数表示拦截网络操作中服务器返回的相关数据;
- onError: 该参数表示拦截网络操作过程中发生的错误;
这三个参数的类型都是方法类型,我们需要创建一个与其类型匹配的对象才能给这些参数赋值,具体的赋值操作可以参考示例程序中的代码。
示例代码
///添加拦截器
Interceptor _interceptor = InterceptorsWrapper(
onRequest: (options,handler) {
// print('request: '+ options.toString());
print('request: '+ options.toString());
return handler.next(options);
},
onResponse: (response,handler){
print('response: ' + response.toString());
return handler.next(response);
},
onError: (error,handler) {
print('response: ' + error.toString());
return handler.next(error);
},
);
mdio.interceptors.add(_interceptor);
在上面的代码中,我们把拦截器获取到的数据通过日志方式打印到终端中,在实际项目大家可以对数据做相关的处理。编译并且运行上面的程序,可以看到终端中输出数据,这样数据都是网络操作相关的数据。我在这里就不演示程序的运行结果了,建议大家自己动手去实践。
看官们,关于"使用dio中的拦截器"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!