结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO
来源:互联网 发布:猎场网络什么时候播出 编辑:程序博客网 时间:2024/06/05 10:05
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 @Override14 public void onCompleted() {15 16 }17 18 @Override19 public void onError(Throwable e) {20 21 }22 23 @Override24 public void onNext(HashMap<String, String> hashMap) {25 // 这里返回FastJson的解析结果26 }27 });
就是这么简单! 赶紧用起来吧
1 0
- 结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO
- 结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO
- 打造属于自己的网络请求框架(OKHttp+Retrofit+RxJava)
- 如何封装自己的网络框架(RxJava+okHttp+Retrofit)
- 网络请求框架 Rxjava+ReTrofit+okHttp+MVP
- android 网络框架学习(okhttp,retrofit,rxjava)
- 封装Retrofit + okhttp + rxjava网络请求框架
- RxJava+Retrofit+okhttp实践结合
- Retrofit+OKhttp+RxJava框架的封装
- Android网络框架之Retrofit + RxJava + OkHttp
- 如何封装自己的网络框架 -进阶封装 (RxJava+okHttp+Retrofit)
- 网络框架-retrofit,okhttp
- RxJava ,OKhttp ,fastJson的合用的MVP框架
- Retrofit 结合rxjava框架用法
- Android Retrofit+rxjava+okhttp请求网络的基本用法
- rxjava+retrofit+okhttp实现流行的网络请求
- Retrofit + RxJava + OkHttp 让网络请求变的简单
- Android Http 标准框架,底层 OkHttp,与 RxJava 完美结合,比 Retrofit 更简单易用。
- 交换排序
- 结构体struct
- Caffe系列(11):数据可视化环境(python接口)配置
- Echarts3.0+Ajax请求数据柱状图实例
- 实例总结:查看虚拟内存状态
- 结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO
- 蓄水池算法
- 通过 Intent 传递类对象
- FFT的c语言实现与物理意义
- 百度天气接口使用说明
- :after伪类+content内容生成经典应用举例
- Java开发中的23种设计模式详解及代码和图解
- ue4显示鼠标
- RabbitMQ RPC(Remote procedure call) 云计算集群的远程调用