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呢~~

 RRO.setApiUrl(API_URL); //同样先设置请求地址(如果之前设置过这步可以忽略)

 public interface RxGitHub { //返回值Call改为RxJava的Observalbe类型
@GET("/")
Observable<HashMap<String, String>> index();
} RxGitHub apiService = RRO.getApiService(RxGitHub.class);
apiService.index()
.subscribeOn(Schedulers.io()) //发送线程由RxJava管理
.observeOn(AndroidSchedulers.mainThread()) //在主线程回调
.subscribe(new Subscriber<HashMap<String, String>>() {
@Override
public void onCompleted() { } @Override
public void onError(Throwable e) { } @Override
public void onNext(HashMap<String, String> hashMap) {
// 这里返回FastJson的解析结果
}
});

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

结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO的更多相关文章

  1. 基于Retrofit+RxJava的Android分层网络请求框架

    目前已经有不少Android客户端在使用Retrofit+RxJava实现网络请求了,相比于xUtils,Volley等网络访问框架,其具有网络访问效率高(基于OkHttp).内存占用少.代码量小以及 ...

  2. Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇

    https://www.jianshu.com/p/5bc866b9cbb9 最近因为手头上的工作做完了,比较闲,想着做一些优化.看到以前用的那一套网络框架添加一个请求比较麻烦,并且比较难用,所以想改 ...

  3. Android网络框架OkHttp之get请求(源码初识)

    概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天 ...

  4. Android网络框架之Retrofit + RxJava + OkHttp 变化的时代

    1.什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2. 特点: 性能好,处理快,使用简单,Retrof ...

  5. RxJava+Retrofit+OkHttp,一步一步封装网络框架;

    使用RxJava+Retrofit+OkHttp,首先在build.gradle添加: compile 'com.squareup.okhttp3:okhttp:3.8.1' compile 'com ...

  6. kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式

    今天要说的干货是:以Kotlin,在MVP模式下(OKHttp和 Retrofit+RxJava)网络请求两种实现方式的一个小案例,希望对大家有所帮助,效果图: Retrofit是Square公司开发 ...

  7. Android 网络请求Retrofit + RxJava

    一.背景 经常看到项目用Retrofit+RxJava+RxAndroid的框架,为了看懂项目的结构.现在来了解一下,Retrofit: Retrofit是Square 公司开发的一款正对Androi ...

  8. Android OKHttp网络框架

    好久没逛简书了.这周公司的项目也已经愉快的迭代了新版本,对于之前一直存留的东西一直没怎么梳理,今天想说说这两年特别火的网络框架.okhttp我想大部分Android开发者都不陌生,因为它的到来.是我们 ...

  9. Retrofit网络框架入门使用

    1.简单介绍 retrofit事实上就是对okhttp做了进一步一层封装优化. 我们仅仅须要通过简单的配置就能使用retrofit来进行网络请求了. Retrofit能够直接返回Bean对象,比如假设 ...

随机推荐

  1. Android 实用代码七段(二)

    声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 一.获取应用程序下所有Acti ...

  2. diamond专题(四)—— 容灾机制

    大家好,本次为大家带来diamond的容灾机制. diamond之所以表现的稳定可靠,除了架构简单之外,另一个重要原因是diamond具有一套完备的容灾机制,容灾机制涉及到client和server两 ...

  3. Hive 0.12 Caused by: MetaException(message:Version information not found in metastore. )解决方法

    配置完成Mysql存储元数据信息,启动后测试show tables报错ERROR exec.DDLTask: org.apache.hadoop.hive.ql.metadata.HiveExcept ...

  4. 详细讲解Hadoop源码阅读工程(以hadoop-2.6.0-src.tar.gz和hadoop-2.6.0-cdh5.4.5-src.tar.gz为代表)

    首先,说的是,本人到现在为止,已经玩过.                   对于,这样的软件,博友,可以去看我博客的相关博文.在此,不一一赘述! Eclipse *版本 Eclipse *下载 Jd ...

  5. linux定时运行命令脚本——crontab

    cron和crontab定时任务: http://blog.csdn.net/ithomer/article/details/6817019 http://blog.sina.com.cn/s/blo ...

  6. php&mysql

    更新语句 $query='update num set num='.$counter.'where id=1';      ....................这个查询失败 $query='upd ...

  7. 问题-"Record not found or changed by another user"

    回答1:===============================================================问题:clientdataset“Record not found ...

  8. zoj 3460 Missile【经典建图&&二分】

    Missile Time Limit: 2 Seconds      Memory Limit: 65536 KB You control N missile launching towers. Ev ...

  9. maven依赖范围

    Scope: Compile:编译依赖,默认就是compile,在编译.测试.运行都有效 Test:测试依赖,仅测试有效 例如Junit Provided:已提供依赖范围.编译.测试有效,运行时候无效 ...

  10. phpstorm映射远程项目

    项目要设置为default,否则自动更新会失败:type要选正确 development path和web path都要设置 options选项中选ctrl+s自动保存,且下方没告警