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 });
就是這麼簡單! 趕忙用起來吧