1. 程式人生 > >【 Karler 專欄】 DvlpOkHttp retrofit2 極簡封裝,極簡接入。

【 Karler 專欄】 DvlpOkHttp retrofit2 極簡封裝,極簡接入。

DvlpOkHttp

retrofit2 極簡封裝,極簡接入。

Download

範例請求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