RxJava+retrofit+okhttp+Gson的网络请求,关于封装的思路的解析,个人理解

        用到过网络请求的小伙伴们肯定都用过一些第三方的请求框架,比如okhttp,严大的noHttp,Xutils,等等,这里呢我们先简单归纳一下,毕竟良好的整理习惯是我们做程序员的必备技能,首先我们来看看okhttp,okhttp是基于流的再次封装,是依赖于okio的,另外我们可以在请求的时候添加我们的拦截器,集成的时候在Gradle中引入我们的okhttp依赖即可,另外nohttp可以去看看大佬的微博,介绍的很详细,Xutils则是一款基于AFinal开发的一款较完善的android框架,支持超大文件上传(超过2G),而且本身带的事件注解不受影响,实现了HttpClient为URLConnection,自动回调泛型,有更安全的断点策略等等,用法也很简单,gradle引入就可以用了。今天我们这里面主要是说的Rxjava+retrofit+okhttp+gson的一套网络请求框架,下面就开始我们的设计思路吧。

首先说一下我们的思路,在用之前我们肯定需要封装自己的请求工具类,这个类里面有什么东西,我们可以自己想一想,第一,我们肯定要去初始化retrofit,网络请求+rxjava才组合成了我们的异步请求,再者,我们也要去初始化用到的okhttp,然后在其中设置我们的拦截器,至于添加什么拦截器,你可以自行考虑,那么就开始gradle引入依赖开始撸码吧。gogogo

第一,引入我们需要的包,如下:

RxJava+retrofit+okhttp+Gson的网络请求,关于封装的思路的解析,个人理解_第1张图片

其中我们遇到的坑可以记录一下,retrofit和retrofit:converter-gson以及retrofit:adapter-rxjava的包的版本要一致,不然building的时候会报错。

接下来我们来写我们的请求工具类,按照思路,先初始化我们的OkHttpClient

RxJava+retrofit+okhttp+Gson的网络请求,关于封装的思路的解析,个人理解_第2张图片

接下来我们来编写我们的拦截器,这边有三个拦截器CacheInterceptor,StethoInterceptor,UserAgentInterceptor,当然这里用了一个单例模式,加上一个同步锁,确保在网络请求的时候单线程请求的安全,这一点我们也不用多说,下面直接来看拦截器部分

RxJava+retrofit+okhttp+Gson的网络请求,关于封装的思路的解析,个人理解_第3张图片

为okhttp做我们的网络缓存,代码注释也很清楚,下面接着来看


RxJava+retrofit+okhttp+Gson的网络请求,关于封装的思路的解析,个人理解_第4张图片

我们的okhttp初始化添加拦截器就基本完成了,下面我们就可以初始化retrofit了

RxJava+retrofit+okhttp+Gson的网络请求,关于封装的思路的解析,个人理解_第5张图片

加入我们的okhttpClient,gson做自动解析到实体类,当我们请求成功直接用就行,十分方便。那么接下去就是我们的调用了,也很简单,就是一个很简单的方法,

RxJava+retrofit+okhttp+Gson的网络请求,关于封装的思路的解析,个人理解_第6张图片

我们用到了我们的http以及我们的接口来设计成一个请求方法,接下来我们就可以结合RxJava来做异步调用了,接着撸,申明我们的接口,加上我们的rxjava做链式调用,整套一步喝成

RxJava+retrofit+okhttp+Gson的网络请求,关于封装的思路的解析,个人理解_第7张图片

至此就基本介绍完毕了,更多代码请见github,项目正在上传github,戳我即可

你可能感兴趣的:(RxJava+retrofit+okhttp+Gson的网络请求,关于封装的思路的解析,个人理解)