Rxjava2與Retrofit2的使用
首先在學習他們的結合使用前,我們需要簡單的學習它們:
Rxjava2的簡單使用與基本操作符
Retrofit2網路框架的使用
這裡我使用了Bmob作為簡單的後臺管理,通過登入案列以便檢視
一 配置
//rxjava2
compile 'io.reactivex.rxjava2:rxjava:2.1.10'
compile 'io.reactivex.rxjava2:rxandroid:2.0.2'
//retrofit2
compile 'com.squareup.retrofit2:retrofit:2.3.0'
//Retrofit到Gson進行轉換的庫
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
//Retrofit到RxJava進行轉換的庫
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
//如果需要新增HttpLoggingInterceptor進行除錯,新增如下依賴
compile 'com.squareup.okhttp3:logging-interceptor:3.6.0'
compile 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0'
二 使用
2.1 建立介面
interface HttpInterface {
//登入
@GET("1/login")
Observable<User> login(@QueryMap Map<String, String> data);
}
2.2 建立Retrofit2工具類
public class RetrofitHttp {
public static HttpInterface getHttpInterface() {
//儲存cookie資訊
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
// Retrofit是基於OkHttpClient的,可以建立一個OkHttpClient進行一些配置
OkHttpClient httpClient = new OkHttpClient.Builder()
// 新增通用的Header
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request build = request.newBuilder()
//新增headler
.addHeader("X-Bmob-Application-Id", "88d31c7422f7bb24b4b162743c436fdc")
.addHeader("X-Bmob-REST-API-Key", "d06ffe71668b518ffec6839436d5ed16")
.method(request.method(), request.body())
.build();
return chain.proceed(build);
}
})
//新增HttpLoggingInterceptor攔截器方便除錯介面
.addInterceptor(new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(String message) {
}
}).setLevel(HttpLoggingInterceptor.Level.BASIC))
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.cookieJar(new JavaNetCookieJar(cookieManager))
.retryOnConnectionFailure(true)
.build();
return new Retrofit.Builder()
.baseUrl("https://api.bmob.cn/")
// 新增Gson轉換器
.addConverterFactory(GsonConverterFactory.create())
// 新增Retrofit到RxJava的轉換器
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(httpClient)
.build()
.create(HttpInterface.class);
}
}
2.3 封裝方便呼叫
public class ApiServer {
/**
* 使用者登入
*/
public static void loginModel(Map<String, String> data, Observer<User> observer) {
RetrofitHttp.getHttpInterface()
.login(data)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
}
2. 4 呼叫方法,訪問網路
Map<String,String>map=new ArrayMap<>();
map.put("username","admin");
map.put("password","admin");
ApiServer.loginModel(map, new Observer<User>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull User user) {
Log.i(TAG, "onNext: "+user);
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
});
相關文章
- RxJava2 + Retrofit2 完全指南 之 對返回Response的統一處理RxJava
- RxJava2的使用RxJava
- Rxjava2的簡單使用與基本操作符RxJava
- Android RxJava系列三: 與Retrofit2結合使用和封AndroidRxJava
- Retrofit2使用方式和原始碼解析原始碼
- Retrofit2 完全解析 探索與okhttp之間的關係HTTP
- RxJava2 系列-3:使用 SubjectRxJava
- 史上最全的Rxjava2講解(使用篇)RxJava
- Retrofit2與服務端例項講解服務端
- 使用RxJava2 + Retrofit 報錯DuplicateFileExceptionRxJavaException
- RxJava2與RxJava1的簡單對比RxJava
- 網路庫與Rxjava2結合常見使用場景介紹RxJava
- Rxjava2(一)、基礎概念及使用RxJava
- Retrofit2分析
- Retrofit2<三> rxJava 分析RxJava
- Retrofit2原始碼解析原始碼
- 基於Retrofit2實現的LycheeHttpHTTP
- Retrofit2學習番外——自定義Converter與CallAdapterAPT
- Retrofit2原始碼解析(一)原始碼
- 深入理解 RxJava2:論 Parallel 與併發(5)RxJavaParallel
- 基於Retrofit2實現的LycheeHttp-使用動態代理實現上傳HTTP
- 秒懂Retrofit2之GsonConverter
- RxJava2 系列-1:一篇的比較全面的 RxJava2 方法總結RxJava
- Retrofit2/Rxkotlin網路請求的封裝Kotlin封裝
- Retrofit2之CallAdapter和ConverterAPT
- Retrofit2的再封裝實戰—多執行緒下載與斷點續傳(三)封裝執行緒斷點
- RxJava2 學習(一)RxJava
- RxJava2 學習(二)RxJava
- RxJava2原始碼分析RxJava原始碼
- 圖解RxJava2(二)圖解RxJava
- 【原始碼SOLO】Retrofit2原始碼解析(一)原始碼
- 【原始碼SOLO】Retrofit2原始碼解析(二)原始碼
- RxJava2 原始碼解析(一)RxJava原始碼
- Rxjava2最全面的解析RxJava
- Rxjava2解析-訂閱流程RxJava
- RxJava2 原始碼解析(二)RxJava原始碼
- Rxjava2操作符(二)RxJava
- RxJava2輕鬆入門RxJava