【 Karler 專欄】 DvlpOkHttp retrofit2 極簡封裝,極簡接入。
DvlpOkHttp
retrofit2 極簡封裝,極簡接入。
範例請求URL
http://wanandroid.com/article/list/0/json"
對應json
{
“data”:{
“curPage”:1,
“offset”:0,
“over”:false,
“pageCount”:288,
“size”:20,
“total”:5757
},
“errorCode”:0,
“errorMsg”:""
}
--------------------------------------------------------start------------------------------------------------------------------------
1.初始化配置
加依賴項
implementation 'com.dvlp:dvlpokhttp:1.0.0'
新增網路許可權
<uses-permission android:name="android.permission.INTERNET" />
在Aplication進行初始化
public static final String API_BASE = "http://wanandroid.com/";//正常在專案常量類 Api.class
RetrofitManager.init(API_BASE);
2.定義請求介面 ApiService
//獲取首頁文章列表 @GET("article/list/0/json") Call2<Article> getArticle0(); //Article:與data資料對應的實體類
3.發起請求
RetrofitManager.create(ApiService.class) .getArticle0() .enqueue(hashCode(), new CallbackAnim<Article>(this) { @Override public void onError(Call2<Article> call2, HttpError error) { Toast.makeText(MainActivity.this, error.msg, Toast.LENGTH_SHORT).show(); } @Override public void onSuccess(Call2<Article> call2, Article article) { Toast.makeText(MainActivity.this, "獲取首頁文章列表", Toast.LENGTH_SHORT).show(); } });
------------------------------------------------end-------------------------------------------------------------------------------
*高度擴充套件說明
1.三種初始化方式,以及使用條件
專案中預設頂級json key分別是:errorCode、errorMsg、data
RetrofitManager.init(API_BASE);
專案中預設頂級json 與預設不匹配:Code、Msg、dataS。“0”對應Code 成功狀態
RetrofitManager.initJSonTag(“Code”,“Msg”,“dataS”,0);
RetrofitManager.init(API_BASE);
庫中封裝Retrofit不滿足需求使用,支援 Retrofit 自定義
RetrofitManager.init(retrofit)
2.請求主體 CallbackAnim、Callback2
CallbackAnim:支援獲取請求Loding狀態
需要實現ILoadingView介面
@Override
public void showLoading() {
// 顯示loding佈局
}
@Override
public void hideLoading() {
//隱藏loding佈局
}
Callback2:不支援Loding獲取狀態
3.data 支援型別 T
物件陣列
Call2<List<WXArticle>> getArticle0();
物件
Call2<Article> getArticle0();
檔案
Call2<File> getArticle0();
字串
Call2<String> getArticle0();
專案地址:https://github.com/dvlp-org/DvlpOkHttp 歡迎start