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. linux下安装

    挂载 1.虚拟机里选择ios文件2.挂载光驱命令: cd / mount /mnt/cdrom/ cd /mnt/cdrom/ ls 卸载 cd /umount /mnt/cdrom/ 安装 XXX. ...

  2. Curl之获取外网IP

    获取外网IP:curl -s ifconfig.me

  3. [POJ1012]Joseph

      Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 50596   Accepted: 19239 Description T ...

  4. AIX 添加开机启动项

    在学习本主题之前,还是先学习一些AIX关于启动的基础知识,如果你只关心如何开机自动重启程序,请跳过第一章.第二章. ----------------------------第一章 AIX开机启动过程介 ...

  5. hadoop中Combiner使用中需要注意的地方

    今天在写一个MR的时候,用到了combiner.在使用过程中,遇到了一些问题,特此记录一下. Combiner分为两种,一种是可插拔的,一种是不可插拔的. 可插拔的:Combiner和Reduce的处 ...

  6. 【Java基础】Java中的代码块

    什么是代码块 在Java中,用{}括起来的代码称之为代码块. 代码块分类 局部代码块:在局部变量位置且用{}括起来的代码,用于限制局部变量的生命周期. 构造代码块:在类中的成员变量位置并用{}括起来的 ...

  7. HDOJ-ACM1008(JAVA)

    这道题很简单,主要是要搞清楚题目的意思 以下是JAVA语言实现: import java.util.*; import java.io.*; public class Main{ public sta ...

  8. oralce health monitor

    1. Health Monitor简介    Health Monitor是11g里新增加的特性,用于数据库的各层和各个组建的诊断检查.例如可以检查:文件损坏.物理逻辑块损坏.redo和undo故障. ...

  9. Ⅴ.spring的点点滴滴--引用其他对象或类型的成员

    承接上文 引用其他对象或类型的成员 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class Person { public string Name { ...

  10. 传值(VIP)

    页面间传值主要分为:1.属性传值.2.协议传值.3.单例传值.4.Block传值:   界面之间的传值:   1.从前往后:属性传值 2.从后往前:代理传值   3.多界面之间的传值 — 单例传值   ...