? ? ? ? 用到過網(wǎng)絡(luò)請(qǐng)求的小伙伴們肯定都用過一些第三方的請(qǐng)求框架,比如okhttp,嚴(yán)大的noHttp,Xutils,等等,這里呢我們先簡(jiǎn)單歸納一下,畢竟良好的整理習(xí)慣是我們做程序員的必備技能,首先我們來看看okhttp,okhttp是基于流的再次封裝,是依賴于okio的,另外我們可以在請(qǐng)求的時(shí)候添加我們的攔截器,集成的時(shí)候在Gradle中引入我們的okhttp依賴即可,另外nohttp可以去看看大佬的微博,介紹的很詳細(xì),Xutils則是一款基于AFinal開發(fā)的一款較完善的android框架,支持超大文件上傳(超過2G),而且本身帶的事件注解不受影響,實(shí)現(xiàn)了HttpClient為URLConnection,自動(dòng)回調(diào)泛型,有更安全的斷點(diǎn)策略等等,用法也很簡(jiǎn)單,gradle引入就可以用了。今天我們這里面主要是說的Rxjava+retrofit+okhttp+gson的一套網(wǎng)絡(luò)請(qǐng)求框架,下面就開始我們的設(shè)計(jì)思路吧。
首先說一下我們的思路,在用之前我們肯定需要封裝自己的請(qǐng)求工具類,這個(gè)類里面有什么東西,我們可以自己想一想,第一,我們肯定要去初始化retrofit,網(wǎng)絡(luò)請(qǐng)求+rxjava才組合成了我們的異步請(qǐng)求,再者,我們也要去初始化用到的okhttp,然后在其中設(shè)置我們的攔截器,至于添加什么攔截器,你可以自行考慮,那么就開始gradle引入依賴開始擼碼吧。gogogo
第一,引入我們需要的包,如下:

其中我們遇到的坑可以記錄一下,retrofit和retrofit:converter-gson以及retrofit:adapter-rxjava的包的版本要一致,不然building的時(shí)候會(huì)報(bào)錯(cuò)。
接下來我們來寫我們的請(qǐng)求工具類,按照思路,先初始化我們的OkHttpClient

接下來我們來編寫我們的攔截器,這邊有三個(gè)攔截器CacheInterceptor,StethoInterceptor,UserAgentInterceptor,當(dāng)然這里用了一個(gè)單例模式,加上一個(gè)同步鎖,確保在網(wǎng)絡(luò)請(qǐng)求的時(shí)候單線程請(qǐng)求的安全,這一點(diǎn)我們也不用多說,下面直接來看攔截器部分

為okhttp做我們的網(wǎng)絡(luò)緩存,代碼注釋也很清楚,下面接著來看

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

加入我們的okhttpClient,gson做自動(dòng)解析到實(shí)體類,當(dāng)我們請(qǐng)求成功直接用就行,十分方便。那么接下去就是我們的調(diào)用了,也很簡(jiǎn)單,就是一個(gè)很簡(jiǎn)單的方法,

我們用到了我們的http以及我們的接口來設(shè)計(jì)成一個(gè)請(qǐng)求方法,接下來我們就可以結(jié)合RxJava來做異步調(diào)用了,接著擼,申明我們的接口,加上我們的rxjava做鏈?zhǔn)秸{(diào)用,整套一步喝成

至此就基本介紹完畢了,更多代碼請(qǐng)見github,項(xiàng)目正在上傳github,戳我即可