设为首页 加入收藏

TOP

结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO
2017-10-13 10:47:26 】 浏览:5193
Tags:结合 Retrofit RxJava Okhttp FastJson 网络 框架 RRO

Retrofit以其灵活的调用形式, 强大的扩展性著称. 随着RxAndroid的推出, Retrofit这样的可插拔式的网络框架因其可以灵活兼容各种数据解析器, 回调形式(主要还是RxJava啦)而更加风靡.

但是! Retrofit2官方虽有一堆集成第三方json解析的实现,比如gson-converter等等..但唯独就是没有FastJson, 这让我很不解..于是自己动手模仿gson-converter写了一个fastjson-converter, 并封装为一个更易用的适合Android平台的网络框架RRO(名字来源于Retrofit+RxJava+Okhttp~).

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

RRO框架屏蔽了Retrofit稍显复杂的配置, 同时保留Retrofit的特性, 一行代码即可完成网络请求的准备工作:

RRO.getApiService(YourApi.class);

接下来就和Retrofit一样了, 通过YourApi这个本地定义的接口可以进行网络请求.

------

我们用实际例子做演示,

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地址

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            });

就是这么简单! 赶紧用起来吧


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇EditText 基本用法 下一篇【腾讯Bugly干货分享】微信热补丁..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }