結合Retrofit,RxJava,Okhttp,FastJson的網絡框架RRO

Retrofit以其靈活的調用形式, 強大的擴展性著稱. 隨着RxAndroid的推出, Retrofit這樣的可插拔式的網絡框架因其能夠靈活兼容各類數據解析器, 回調形式(主要仍是RxJava啦)而更加風靡.html

可是! Retrofit2官方雖有一堆集成第三方json解析的實現,好比gson-converter等等..但惟獨就是沒有FastJson, 這讓我很不解..因而本身動手模仿gson-converter寫了一個fastjson-converter, 並封裝爲一個更易用的適合Android平臺的網絡框架RRO(名字來源於Retrofit+RxJava+Okhttp~).java

github地址: https://github.com/panespanes/RRO/git

RRO框架屏蔽了Retrofit稍顯複雜的配置, 同時保留Retrofit的特性, 一行代碼便可完成網絡請求的準備工做:github

RRO.getApiService(YourApi.class);

接下來就和Retrofit同樣了, 經過YourApi這個本地定義的接口能夠進行網絡請求.json

------api

咱們用實際例子作演示,網絡

http://api.github.com/是一個公開的Restful Api, 請求這個地址將獲得github返回的json格式的數據, 這裏展現如何用RRO完成這一網絡請求最終獲得返回值.框架

public static String API_URL = "https://api.github.com"; //定義接口地址


 public interface GitHub { //和Retrofit同樣, 定義一個本地接口
    @GET("/")
    Observable<HashMap<String, String>> index();
  }


  GitHub github = RRO.getApiService(GitHub.class, API_URL); //獲取包裝好的接口實例, 接下來就能夠像調用本地接口方法同樣作網絡請求了.

  Call<HashMap<String, String>> call = github.index(); //與Retrofit用法一致, 調用本地方法

  call.enqueue(new Callback<HashMap<String, String>>() { //異步執行
    @Override
    public void onResponse(Call<HashMap<String, String>> call, Response<HashMap<String, String>> response) {
        // 這裏的response即接口返回數據經FastJson解析後的結果.
    }

    @Override
    public void onFailure(Call<HashMap<String, String>> call, Throwable t) {
        Log.d("RRO", "onFail: " + t.getMessage());
    }
  });

 

固然別忘了在gradle中引用:異步

在project的build.gradle定義maven地址maven

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

在module中添加引用

dependencies {
    compile 'com.github.panespanes:RRO:44890e7717'
}

------------

如何使用RxJava呢~~

 1 RRO.setApiUrl(API_URL); //一樣先設置請求地址(若是以前設置過這步能夠忽略)
 2 
 3 public interface RxGitHub { //返回值Call改成RxJava的Observalbe類型
 4   @GET("/")
 5   Observable<HashMap<String, String>> index();
 6 }
 7 
 8 RxGitHub apiService = RRO.getApiService(RxGitHub.class);
 9 apiService.index()
10           .subscribeOn(Schedulers.io()) //發送線程由RxJava管理
11           .observeOn(AndroidSchedulers.mainThread()) //在主線程回調
12           .subscribe(new Subscriber<HashMap<String, String>>() {
13               @Override
14               public void onCompleted() {
15 
16               }
17 
18               @Override
19               public void onError(Throwable e) {
20 
21               }
22 
23               @Override
24               public void onNext(HashMap<String, String> hashMap) {
25                     // 這裏返回FastJson的解析結果
26               }
27            });

就是這麼簡單! 趕忙用起來吧

相關文章
相關標籤/搜索