淺談RxJava+Retrofit+OkHttp 封裝使用
背景
之前學習完Retrofit+Rxjava之后寫了一篇關于封裝的博客,發(fā)出后受到大家的關注以及使用,由于不斷的完善之前的項目,所以決定把最新的項目封裝過程講解出來,供大家查看!
Retrofit介紹:
Retrofit和okHttp師出同門,也是Square的開源庫,它是一個類型安全的網絡請求庫,Retrofit簡化了網絡請求流程,基于OkHtttp做了封裝,解耦的更徹底:比方說通過注解來配置請求參數(shù),通過工廠來生成CallAdapter,Converter,你可以使用不同的請求適配器(CallAdapter), 比方說RxJava,Java8, Guava。你可以使用不同的反序列化工具(Converter),比方說json, protobuff, xml, moshi等等。
官網 http://square.github.io/retrofit/
github https://github.com/square/retrofit
效果

懶人簡單的使用方式
為什么稱為懶人,因為你什么都不用做,直接按照一般案例寫rx和retrofit的使用
引入需要的包
/*rx-android-java*/ compile 'io.reactivex:rxjava:+' compile 'com.squareup.retrofit:adapter-rxjava:+' compile 'com.trello:rxlifecycle:+' compile 'com.trello:rxlifecycle-components:+' /*rotrofit*/ compile 'com.squareup.retrofit2:retrofit:+' compile 'com.squareup.retrofit2:converter-gson:+' compile 'com.squareup.retrofit2:adapter-rxjava:+' compile 'com.google.code.gson:gson:+'
創(chuàng)建一個service定義請求的接口
/**
* service統(tǒng)一接口數(shù)據(jù)
* Created by WZG on 2016/7/16.
*/
public interface HttpService {
@POST("AppFiftyToneGraph/videoLink")
Observable<RetrofitEntity> getAllVedioBy(@Body boolean once_no);
}
創(chuàng)建一個retrofit對象
//手動創(chuàng)建一個OkHttpClient并設置超時時間
okhttp3.OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(5, TimeUnit.SECONDS);
Retrofit retrofit = new Retrofit.Builder()
.client(builder.build())
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(HttpManager.BASE_URL)
.build();
http請求處理
// 加載框
final ProgressDialog pd = new ProgressDialog(this);
HttpService apiService = retrofit.create(HttpService.class);
Observable<RetrofitEntity> observable = apiService.getAllVedioBy(true);
observable.subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(
new Subscriber<RetrofitEntity>() {
@Override
public void onCompleted() {
if (pd != null && pd.isShowing()) {
pd.dismiss();
}
}
@Override
public void onError(Throwable e) {
if (pd != null && pd.isShowing()) {
pd.dismiss();
}
}
@Override
public void onNext(RetrofitEntity retrofitEntity) {
tvMsg.setText("無封裝:\n" + retrofitEntity.getData().toString());
}
@Override
public void onStart() {
super.onStart();
pd.show();
}
}
);
源碼:傳送門-源碼地址
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android studio button 按鈕 四種綁定事件的方法【實例代碼】
這篇文章主要介紹了Android studio button 按鈕 四種綁定事件的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08
Android中關于CoordinatorLayout的一些實用布局技巧
大家都知道CoordinatorLayout是一個“加強版”的 FrameLayout,那么下面這篇文章主要給大家分享了Android中關于CoordinatorLayout的一些布局技巧,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-06-06
android使用FlipAnimation實現(xiàn)3D垂直翻轉動畫
這篇文章主要為大家詳細介紹了android使用FlipAnimation實現(xiàn)3D垂直翻轉動畫,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Android組件創(chuàng)建DrawerLayout導航
這篇文章主要為大家詳細介紹了Android組件創(chuàng)建DrawerLayout導航的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
Android中使用Kotlin實現(xiàn)一個簡單的登錄界面
Kotlin 是一種在 Java 虛擬機上運行的靜態(tài)類型編程語言,被稱之為 Android 世界的Swift,由 JetBrains 設計開發(fā)并開源。接下來本文通過實例代碼給大家講解Android中使用Kotlin實現(xiàn)一個簡單的登錄界面,一起看看吧2017-09-09
Android Studio利用AChartEngine制作餅圖的方法
閑來無事,發(fā)現(xiàn)市面上好多app都有餅圖統(tǒng)計的功能,得空自己實現(xiàn)一下,下面這篇文章主要給大家介紹了關于Android Studio利用AChartEngine制作餅圖的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧2018-10-10

