Retrofit+RxJava Github ReadMe

Retrofit-RxJava

項目簡介

采用Retrofit+RxJava作為Http框架

github:https://github.com/javalong/Retrofit-RxJava

快速接入

  1. 添加項目 module 或 引入依賴

        compile 'com.javalong:retrofit-rxjava:1.0.0'
    
  2. 在使用之前調(diào)用代碼初始化

        RetrofitHelper.getInstance().init(this,baseUrl);
    

    baseUrl作為http請求的前綴.

  3. 注冊自己需要的Api

        RetrofitHelper.getInstance().registerApi(ServerApi.class);
    
  4. 添加自己的Http請求

    模仿demo中的ServerApi.java中的Http請求矾利,自定義自己的Http請求

    也可參考上面的blog.

  5. 調(diào)用方法Http請求

    參考demo

功能介紹

  1. 主要支持如下json格式

    {
       data:{},
       errorCode:200,
       moreInfo:"",
       ...
       ...
    }
    

    可以同級添加需要的字段咨察,主要的數(shù)據(jù)在data中。

    可以在ResponseMessageBean.java自定義字段

  2. 支持轉(zhuǎn)化基本類型

     Observable<Boolean> postBoolSuccess();
     Observable<Integer> postIntSuccess();
     ...
     ...
    
  3. 支持不處理操作呕臂,直接返回請求的內(nèi)容

    @GET("{requestUrl}")
    Observable<String> get(@Path("requestUrl") String requestUrl, @Header("origion")boolean origion);
    

    在任意的請求方法中多添加一個參數(shù)@Header("origion")boolean origion,然后傳入true

    具體實現(xiàn):

    TWInterceptor.java

    
       ...
       if (origion != null && origion) {
            return onSuccess(originalResponse, jsonString);
        }
       ...
        String origion = newRequest.header("origion");
       ...
    
  4. 支持泛型轉(zhuǎn)換

     //ServerApi.java中聲明
     @POST("postSuccess")
     Observable<TestBean> postSuccess();
    
     //調(diào)用后直接返回解析好的內(nèi)容
     RetrofitHelper.getApi().postSuccess()
                             .subscribe(new Observer<TestBean>() {
                                 @Override
                                 public void onCompleted() {
                                 }
                                 @Override
                                 public void onError(Throwable e) {
                                     tvConvert.setText(e.getMessage());
                                 }
                                 @Override
                                 public void onNext(TestBean s) {
                                     tvConvert.setText(s.toString());
                                 }
                             });
    

    轉(zhuǎn)換成泛型對象旦签,具體使用到的數(shù)據(jù)查坪,是返回的json對象中的data字段。

  5. 支持List泛型轉(zhuǎn)換

     @POST("postListSuccess")
     Observable<List<TestBean>> postListSuccess();
    
  6. 支持請求失敗處理

    1. 在本項目中如果errorCode!=200認為是失敗宁炫,會拋出異常偿曙,進入RxJava的onError回調(diào)。

    2. 如果是網(wǎng)絡問題羔巢,造成的請求失敗望忆,同樣也會進入onError回調(diào)罩阵。

  7. 支持https

  8. 支持自定義OkHttpClient

    初始化時,可以調(diào)用

       RetrofitHelper.getInstance().init(this,baseUrl,okHttpClient);
    

    默認OkHttpClient為

        Cache cache = new Cache(new File(mContext.getCacheDir(), "HttpCache"), 1024 * 1024 * 100);
        mOkHttpClient = new OkHttpClient.Builder().
                addInterceptor(mInterceptor).
                retryOnConnectionFailure(false).
                connectTimeout(30, TimeUnit.SECONDS).
                sslSocketFactory(sslContext.getSocketFactory()).
                hostnameVerifier(DO_NOT_VERIFY).
                cache(cache).
                build();
    

    100M緩存,30m秒超時启摄,失敗不重試

  9. 支持自定義Interceptor

    interceptor是okHttpClient的一個屬性永脓,如果不需要全部自定義OkHttpClicent,只想自定義Interceptor
    可以調(diào)用.

        RetrofitHelper.getInstance().init(this,baseUrl,interceptor);
    

    傳入的interceptor需要繼承l(wèi)ib中的TWInterceptor.

    作用:

    1. 自定義 onSuccess回調(diào)鞋仍。
    2. 支持用戶對某一類errorCode做統(tǒng)一處理在 onFailed中
    3. 自定義UserAgent
  10. 優(yōu)化鏈式結構

    不需要在請求中都添加

        subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
    

    已經(jīng)在TWJavaCallAdapterFactory.java中全局添加

Demo截圖

選擇請求類型
post請求對象
post請求int
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搅吁,隨后出現(xiàn)的幾起案子威创,更是在濱河造成了極大的恐慌,老刑警劉巖谎懦,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肚豺,死亡現(xiàn)場離奇詭異,居然都是意外死亡界拦,警方通過查閱死者的電腦和手機吸申,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來享甸,“玉大人截碴,你說我怎么就攤上這事◎韧” “怎么了日丹?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚯嫌。 經(jīng)常有香客問我哲虾,道長,這世上最難降的妖魔是什么择示? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任束凑,我火速辦了婚禮,結果婚禮上栅盲,老公的妹妹穿的比我還像新娘汪诉。我一直安慰自己,他們只是感情好剪菱,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布摩瞎。 她就那樣靜靜地躺著,像睡著了一般孝常。 火紅的嫁衣襯著肌膚如雪旗们。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天构灸,我揣著相機與錄音上渴,去河邊找鬼岸梨。 笑死,一個胖子當著我的面吹牛稠氮,可吹牛的內(nèi)容都是我干的曹阔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼隔披,長吁一口氣:“原來是場噩夢啊……” “哼赃份!你這毒婦竟也來了?” 一聲冷哼從身側響起奢米,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤抓韩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鬓长,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谒拴,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年涉波,在試婚紗的時候發(fā)現(xiàn)自己被綠了英上。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡啤覆,死狀恐怖苍日,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窗声,我是刑警寧澤易遣,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站嫌佑,受9級特大地震影響豆茫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屋摇,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一揩魂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炮温,春花似錦火脉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至担巩,卻和暖如春方援,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涛癌。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工犯戏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留送火,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓先匪,卻偏偏與公主長得像种吸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子呀非,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容