Retrofit結合Rxjava初步使用
Retrofit和Rxjava結合使用
1.新增依賴:
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.google.code.gson:gson:2.8.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
2.Retrofit的使用:
1).編寫API服務程式碼
package com.micky.retrofitrxandroiddagger2.data.api;
import com.micky.retrofitrxandroiddagger2.data.api.response.GetIpInfoResponse;
import retrofit.Call;
import retrofit.http.GET;
import retrofit.http.Query;
import rx.Observable;
/**
* @Project retrofitrxandroiddagger2
* @Packate com.micky.retrofitrxandroiddagger2.data.api
* @Description
* @Author Micky Liu
* @Email [email protected]
* @Date 2015-12-21 17:22
* @Version 1.0
*/
public interface ApiService {
@GET("service/getIpInfo.php")
Call<MyMessage> getIpInfo(@Body FprmBody body);
}
2).使用GsonFormat定義接收資料的Bean類
public class MyMessage {
/**
* reason : 成功的返回
* result : {"code":100000,"text":"答不答就看我心情啦。"}
* error_code : 0
*/
private String reason;
private ResultBean result;
private int error_code;
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public ResultBean getResult() {
return result;
}
3).網路請求資料
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://op.juhe.cn/robot/index/")
.client(new OkHttpClient())
.addConverterFactory(GsonConverterFactory.create())
.build();
FormBody body = new FormBody.Builder()
.add("info","%E6%88%91%E6%98%AF%E8%B0%81&")
.add("dtype","&loc=&userid=&")
.add("key","f5d2667dff1bfc58786a06c04c8429af").build();
netAPI= retrofit.create(NetAPI.class);
netAPI.Message(body).enqueue(new Callback<MyMessage>() {
@Override
public void onResponse(Call<MyMessage> call, Response<MyMessage> response) {
}
@Override
public void onFailure(Call<MyMessage> call, Throwable t) {
}
});
3.Retrofit和Rxjava結合使用
1).首先在初始化Retrofit中加入addCallAdapterFactory(RxjavaCallAdapterFactory.create())
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://op.juhe.cn/robot/index/")
.client(new OkHttpClient())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
2).API類中Call變為Observable
Observable<MyMessage> Message(@Body FormBody body);
3).具體程式碼
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://op.juhe.cn/robot/index/")
.client(new OkHttpClient())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
FormBody body = new FormBody.Builder()
.add("info","%E6%88%91%E6%98%AF%E8%B0%81&")
.add("dtype","&loc=&userid=&")
.add("key","f5d2667dff1bfc58786a06c04c8429af").build();
netAPI= retrofit.create(NetAPI.class);
netAPI.Message(body).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<MyMessage>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e(TAG,"onsubscribe");
}
@Override
public void onNext(@NonNull MyMessage myMessage) {
Log.e(TAG,"onNext");
tx.setText(myMessage.getResult().getText());
}
@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG,"onError");
}
@Override
public void onComplete() {
Log.e(TAG,"onComplete");
}
});
}
})
不同之處在於加入三個方法:
subscribeOn(Schedulers.io):指定Observable的工作, 在我們的例子中Observable的工作即傳送請求, 在io執行緒做, 指定了被觀察者的處理執行緒;
observeOn(AndroidSchedulers.mainThread()):指定最後onNext()回撥在主執行緒, 即指定了通知後續觀察者的執行緒.
subscribe():新增一個訂閱者, 即它的觀察者.當請求返回後, 回到主執行緒, 更新UI.
相關推薦
Retrofit結合Rxjava初步使用
Retrofit和Rxjava結合使用 1.新增依賴: compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.google.code.gson:gson:2.8.0' compile 'com.squar
Retrofit結合RxJava簡單get/post請求(傳參)
ApiServices: public interface ApiServices { //post請求:第一個引數url,可以傳遞為空,不能不寫,第二個map集合為引數 @POS
RXJava & Retrofit 結合最佳實踐
RXJava & Retrofit 結合最佳實踐 開始 開始 本來決定自己碼,發現早有大神寫的明明白白了,於是這裡貼一下連結,共享大家,也是自己備忘,哈哈哈哈 RxJava 與 Retrofit 結合的最佳實踐 https://www.ji
Retrofit與Rxjava結合使用例項
環境配置 在Module:app的build.gradle下新增如下依賴,然後sync now。下面這些依賴有些沒有用到,暫時都新增進去不會有錯。 dependencies { implem
Retrofit與RxJava的結合使用-------簡易版
這兩個框架都是現在特別流行的框架,強強聯合使我們的效率變得更加的直接 首先我們需要匯入其中的依賴 implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation 'com.squa
與REST無縫結合-RxJava和Retrofit
在上一章中,我們學習瞭如何使用排程器在不同於UI執行緒的執行緒上操作。我們學習瞭如何高效的執行I/O任務而不用阻塞UI以及如何執行耗時的計算任務而不耗損應用效能。在最後一章中,我們將建立一個最終版的真實世界的例子,用Retrofit對映到遠端的API,非同步
OkRx擴充套件,讓OkGo完美結合RxJava,比Retrofit更簡單易用
OkGo - Rx擴充套件,可以方便的和RxJava聯用,如果你熟悉Retrofit,那麼這個框架和Retrofit使用方式很像。 以下是該專案相關文章的傳送門: 聯絡方式 如何選擇網路框架 說了這麼多功能,我們來看看為什麼要使用OkGo這個框架。 首先目前主流的幾
淺談Android MVP設計模式(簡單結合RxJava+Retrofit)
什麼是MVP 為什麼要用MVP 怎麼去完成一個MVP的設計呢 demo例項功能雖小五臟俱全 準備工作 View的基類
APP實用開發—RxJava 和 Retrofit 結合使用
RxJava 和 Retrofit 結合使用的幾個最常見使用方式舉例。 RxJava中有個叫做Subscription的介面,可以用來取消訂閱. public interface Subscription { void unsubscribe(
Retrofit和RxJava結合使用
使用Retrofit的時候就不得不提到RxJava,RxJava是一個基於觀察者模式的非同步實現。關於RxJava的入門學習,強烈推薦《給Android開發者的RxJava詳解》 正如上篇部落格所說,得益於Retrofit中靈活的Converter
Mvp Retrofit Okhttp Rxjava
extend fin 添加 okhttp3 bind item .get 關聯 osi MainActivity package com.bwie.shexinhai; import android.os.Bundle; import android.support
RecyclerView+Retrofit+OkHttp+RxJava
泛型方法 bsp list row ket ica throws 一個 tro *圖片初始化public class FrescoClass extends Application{ @Override public void onCreate() {
retrofit+okhttp+rxjava使用、封裝
概述 該demo對聯網框架進行了封裝,包括連網獲取,activity onDestroy時網路取消,請求響應的log,聯網的管理等。 所需依賴 implementation 'com.squareup.retrofit2:retrofit:2.4
安卓專案實戰之強大的網路請求框架okGo使用詳解(五):擴充套件專案okRx,完美結合RxJava
前言 在第一篇講解okGo框架新增依賴支援時,還記得我們額外新增的兩個依賴嗎,一個okRx和一個okServer,這兩個均是基於okGo框架的擴充套件專案,其中okRx可以使請求結合RxJava一起使用,而okServer則提供了強大的下載上傳功能,如斷點支援,多工管理等,本篇我們主要講
Retrofit+okhttp+rxjava, 快取策略使用
主要涉及幾個要點: 要使用離線快取的頁面網路請求方式必須要用GET(POST不可以),其他不要的頁面還是用POST 在新增攔截器時,需要新增網路攔截器( .addNetworkInterceptor(new NetInterceptor()) //有網情況下,一分鐘內每次
retrofit+okhttp+rxjava
1.上傳檔案 @Multipart @POST(API_P_PERSONALDATA) Flowable<FileBean> uploadfile(@PartMap Map<String, RequestBody> files); //上傳多張
Retrofit與RxJava和OKhttp對接
Retrofit在整個網路請求架構(Rxjava+Retrofit+OKhttp)的位置處於一箇中間連線的環節,非同步解耦層是Rxjava,網路請求層是OKhttp。 那Retrofit是如何與二者進行對接的,本人菜鳥,在這裡寫一下自己的理解,如有不合理之處,懇請指正。
Retrofit+Okhttp+RxJava介紹的簡單太簡單,但很容易理解
轉載的 https://www.cnblogs.com/whoislcj/p/5539239.html Android okHttp網路請求之Retrofit+Okhttp+RxJava組合 前言: 通過上面的學習
Retrofit+okhttp+Rxjava 網路請求
implementation 'io.reactivex:rxandroid:1.0.1' implementation 'com.squareup.retrofit2:retrofit:2.0.2' implementation 'com.squareup.retrofit2:conver
js與h5的結合,初步學習。
初步學習拖放事件 首先了解一下與拖放事件有關的標籤,拖動某元素時依次觸發: dragstart drag dragend 其次瞭解某元素拖動到一個你想要拖動的目標上,依次發生: drage