RetrofitCache
代碼已上傳到 Github
| 優(yōu)雅的給 Retrofit 加上緩存 RetrofitCache
只需要一行代碼,就讓你的應(yīng)用,即刻擁有離線緩存的功能
集成
添加依賴庫(kù)
project build.gradle加入jitpack
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
項(xiàng)目的build.gradle加入
compile 'com.github.Mr-wangyong:RetrofitCache:v1.0'
開(kāi)始使用
- 創(chuàng)建一個(gè)CacheInterceptor
RetrofitCacheInterceptor retrofitCacheInterceptor =
new RetrofitCacheInterceptor(getApplicationContext());
- 創(chuàng)建一個(gè) cache 目錄(一般配置
Retrofit
的時(shí)候都會(huì)配置)
File cacheDir = Environment.getExternalStorageDirectory();
Cache cache = new Cache(cacheDir, 20 * 1024 * 1024);
-
給 OkHttp 設(shè)置上 cacheInterceptor
OkHttpClient okHttpClient = new OkHttpClient() .newBuilder() .addInterceptor(retrofitCacheInterceptor) .cache(cache) .build();
-
最后,配置完
Retrofit
Retrofit build = new Retrofit .Builder() .baseUrl("http://api.jcodecraeer.com/") //set client .client(okHttpClient) .addConverterFactory(ScalarsConverterFactory.create()) .build();
其實(shí),大部分項(xiàng)目都已經(jīng)配置完成了 cache 和 OkHttpClint
這個(gè)時(shí)候,只需要在 OkHttpClint里面加上即可
addInterceptor(new RetrofitCacheInterceptor(context))
注意:Retrofit 為 RESTful API 而生,所以內(nèi)部開(kāi)啟緩存只支持 GET
請(qǐng)求,對(duì)于部分項(xiàng)目后臺(tái)接口混亂, GET
POST
亂飛的情況,暫時(shí)不支持POST
緩存
附言
HTTP協(xié)議中共定義了八種方法或者叫“動(dòng)作”來(lái)表明對(duì)Request-URI指定的資源的不同操作方式,具體介紹如下:
OPTIONS:返回服務(wù)器針對(duì)特定資源所支持的HTTP請(qǐng)求方法。也可以利用向Web服務(wù)器發(fā)送'*'的請(qǐng)求來(lái)測(cè)試服務(wù)器的功能性。
HEAD:向服務(wù)器索要與GET請(qǐng)求相一致的響應(yīng),只不過(guò)響應(yīng)體將不會(huì)被返回。這一方法 可以在不必傳輸整個(gè)響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)消息頭中的元信息。
GET 向特定的資源發(fā)出請(qǐng)求。
POST:向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的創(chuàng)建和/或已有資源的修改。
PUT:向指定資源位置上傳其最新內(nèi)容。
DELETE:請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源。
TRACE:回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷。
CONNECT:HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。
原理請(qǐng)看我之前的文章: