Retrofit与RxJava结合-响应式编程第一个例子

Retrofit网络通信框架

Retrofit官方Github地址

github官方:retrofit
samples 目录有官方的调用例子
官方教程

引入Retrofit依赖:

//代码仓库地址
repositories {
    maven { url 'https://oss.jfrog.org/libs-snapshot' }
}
//添加如下依赖
dependencies {
    //Retrofit
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
    //由于返回的数据为json类型,这里我们需要在studio中添加Gson的依赖:
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
}

RxJava&RxAndroid

为什么要用RxJava框架:在通常模式中我们很多操作都是通过回调区处理,一层层的回调进行嵌套,代码逻辑难于理解。

RxJava&RxAndroid官方Github地址

github官方:RxJava
github官方:RxAndroid

引入RxJava 和RxAndroid依赖:

RxAndroid其实就是对RxJava的扩展

  //Rxjava与retrofit结合,我们需要在Retrofit对象建立的时候添加一句代码 addCallAdapterFactory(RxJavaCallAdapterFactory.create())
  compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
  //事件的消费在Android主线程,所以我们还要添加如下
  //compile 'io.reactivex:rxandroid:1.2.0'

  // Because RxAndroid releases are few and far between, it is recommended you also
  // explicitly depend on RxJava's latest version for bug fixes and new features.
    compile 'io.reactivex.rxjava2:rxjava:2.1.3'

RxJava介绍

推荐对RxJava详细介绍很全面的一篇文章:给Android 开发者的 RxJava 详解


开始撸码

获取网路的数据来源

借用知乎首页Api返回的Json格式
http://news-at.zhihu.com/api/4/news/

创建一个Retrofit的管理类RetrofitManager.java


public class RetrofitManager {
    //知乎当日消息api
    static final String BASE_URL = "http://news-at.zhihu.com/api/4/news/";
    private Retrofit retrofit;
    private static RetrofitManager ourInstance = new RetrofitManager();

    public static RetrofitManager getInstance() {
        return ourInstance;
    }

    private RetrofitManager() {
    }

    /**
     * 获取retrofit单例
     *
     * @return Retrofit single
     */
    public Retrofit getRetrofit() {
        if (retrofit == null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) ////指定RxJava适配工厂
                    .addConverterFactory(GsonConverterFactory.create())  //在Retrofit库
                    .build();
        }
        return retrofit;
    }
}

数据实体类的定义

下面是返回的结构

Retrofit与RxJava结合-响应式编程第一个例子_第1张图片
image.png

我用嵌套结构继续定义bean

Retrofit与RxJava结合-响应式编程第一个例子_第2张图片
image.png

NewsResult.java 代码

public class NewsResult {
    private String date;
    private List stories;
    private List top_stories;

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public List getStories() {
        return stories;
    }

    public void setStories(List stories) {
        this.stories = stories;
    }

    public List getTop_stories() {
        return top_stories;
    }

    public void setTop_stories(List top_stories) {
        this.top_stories = top_stories;
    }

}

参考:
教你一步步搭建安卓MVP+Retrofit+RxJava框架--MVP模式

给Android 开发者的 RxJava 作者-扔物线

给Android 开发者的 RxJava 详解-扔物线

【Android】Retrofit网络请求参数注解,@Path、@Query、@QueryMa...
Rxjava+Retrofit统一异常处理与生命周期管理--美团技术群--张钦

你可能感兴趣的:(Retrofit与RxJava结合-响应式编程第一个例子)