迅速上手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            });

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

时间: 2024-10-10 23:03:16

迅速上手Retrofit+RxJava+Okhttp+FastJson的网络框架[RRO]的相关文章

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

目前已经有不少Android客户端在使用Retrofit+RxJava实现网络请求了,相比于xUtils,Volley等网络访问框架,其具有网络访问效率高(基于OkHttp).内存占用少.代码量小以及数据传输安全性高等特点. Retrofit源码更是经典的设计模式教程,笔者已在之前的文章中分享过自己的一些体会,有兴趣的话可点击以下链接了解:<Retrofit源码设计模式解析(上)>.<Retrofit源码设计模式解析(下)> 但在具体业务场景下,比如涉及到多种网络请求(GET/PU

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

概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天又发布了.以下以OkHttp3.2版本为准,没办法,上个星期看的时候还是以3.2为最新版本的.首先,我们要先了解一些背景,OkHttp这个框架是有Square公司推出的,进入官网.如果想看API,点击进入API.大概了解了OkHttp之后,我们应该知道OkHttp是一个网络框架,想想以前在开发中,网

Android 网络框架 Retrofit2.0介绍、使用和封装

前言 时至今日,Android的网络框架不再像之前那么到处都是,随着Google把 HttpClient直接删掉,似乎意味着Android越来越成熟.网络框架中的佼佼者Volley也不再那么光鲜,取而代之的是 Retrofit 和 okHttp. 感觉很像 OnePiece 中白胡子的离去象征着时代的变革,新时代的开始,多弗的垮台象征着七武海制度的取缔一样,不会使用Retrofit + okHttp + RxJava等一系列技术,就迈不进新时代的门槛,也不足以称为一个合格的开发者. 哈哈闲话不多

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

1.什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2. 特点: 性能好,处理快,使用简单,Retrofit 是安卓上最流行的HTTP Client库之一 使用REST API设计风格 支持 NIO(new i/o) 默认使用OKHttp处理网络请求,我觉得可以看成是OKHttp的增强. 随着Google对HttpClient的摒弃,和Volley的逐渐没落,OkHttp开始异军突起,而Retrofi

[Android] 转-RxJava+MVP+Retrofit+Dagger2+Okhttp大杂烩

原文url: http://blog.iliyun.net/2016/11/20/%E6%A1%86%E6%9E%B6%E5%B0%81%E8%A3%85/ 这几年来android的网络请求技术层出不穷,网络请求从最初的HttpClient,HttpURLConnection到Volley,OkHttp,Retrofit.但是如果直接使用,每个网络请求都会重复很多相同的代码,这显然不是一个老司机需要的.接下来我们就讲讲网络请求封装那点事. 主要利用以下技术点 - Retrofit2 Retrof

带你一步步剖析Retrofit 源码解析:一款基于 OkHttp 实现的网络请求框架

OkHttp与Retrofit 的区别与联系是怎样的? 参考答案:OkHttp和Retrofit都是目前流行网络开源框架 封装不同:Retrofit封装了具体的请求,线程切换以及数据转换.retrofit通过使用代理,外观,策略模式对okhttp进行了封装OkHttp 是基于Http协议封装的一套请求客户端 职责不同:Retrofit主要负责应用层面的封装,面向开发者,方便使用,比如请求参数,响应数据的处理,错误处理等等.OkHttp主要负责socket部分的优化与封装,比如网络访问,多路复用,

优雅地使用Retrofit+RxJava(二)

前言 在我上一篇讲Retrofit+RxJava在MVP模式中优雅地处理异常(一)中,发现很多网友发邮箱给我表示期待我的下一篇文章,正好趁着清明假期,我就写写平时我在使用RxJava+Retrofit怎么去灵活地处理一些场景.比如说一些比较常见的场景: 网络请求过程中token的处理 网络请求数据的加密与解密 为每个请求添加固定的头部,比如说当前版本号,Rsa的密钥等等 规范化每个网络请求,让代码只写一次 我自己平时对代码的简洁性要求非常高,所以retrofit+rxjava正好切中了我的痛点,

retrofit+rxjava+recyclerview+下拉刷新+自动加载更多

安卓开发过程中,网络请求与下拉刷新分页列表的控件几乎可以说是必不可少的,但是每次开发一款产品都要重新开发,肯定是不可取的,那么最好是可以自己整理一个开发框架,那么以后开发,直接引入项目即可 网络框架的封装,从httpclient,到xutils,再到volley,再到okhttp,每次整合都发现多多少少的不足,目前自己觉得最成熟的一个也就是retrofit+okhttp3+rxjava的组合,rxjava不懂的推荐看大神的深入浅出rxjava,retrofit的使用自己网上搜咯 下拉刷新列表的实

Retrofit网络框架入门使用

1.简介 retrofit其实就是对okhttp做了进一步一层封装优化.我们只需要通过简单的配置就能使用retrofit来进行网络请求了. Retrofit能够直接返回Bean对象,例如如果我们进行一个网络接口的请求,返回来一串json字符串.那么这个时候一般我们都要拿到这个json字符串后进行解析得到对应的Bean对象,Retrofit只要依赖一下Gson的转换库然后进行简单的配置就能够直接拿到Bean对象了,不需要我们自己去解析. 接触过OKHttp的人会发现,Retrofit和OKHttp