Rxjava+Retrofit简单使用,随机获取美女图片Demo

Demo源码地址:https://gitee.com/olleh/MyRetrofit2

Rxjava+Retrofit简单使用,随机获取美女图片Demo_第1张图片

资料

json数据请求:
https://gank.io/api

json在线解析:
https://www.json.cn/

Retrofit官方地址
https://github.com/square/retrofit

相关资料:
https://blog.csdn.net/carson_ho/article/details/73732115

1.添加依赖

 def retrofit_version = "2.1.0"
    def rxjava_version = "2.0.1"

//RxJava的依赖包
    implementation 'io.reactivex.rxjava2:rxjava:' + rxjava_version
//RxAndroid的依赖包
    implementation 'io.reactivex.rxjava2:rxandroid:' + rxjava_version
//Rxjava + retrofit 用到的一个依赖库,使接口回调的数据以Rxjava形式供我们接受
    implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0-RC3'
//retrofig依赖包
    implementation 'com.squareup.retrofit2:retrofit:' + retrofit_version
//自动将服务器返回的数据 以及 我们传给一个JavaBeen实体,转换成json
    implementation 'com.squareup.retrofit2:converter-gson:' + retrofit_version
//gson实体解析库
    implementation 'com.google.code.gson:gson:2.6.2'
//OKHttp日志拦截器,OKHttp官方提供。
    implementation 'com.squareup.okhttp3:logging-interceptor:3.3.0'

2.使用GsonFormat创建Bean对象

https://gank.io/api/random/data/Android/10

3.创建回调接口

package com.example.zhangyu.myretrofit2.Bean;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;

public interface GankApi {

    /**
     * 数据类型:福利 | Android | iOS | 休息视频 | 拓展资源 | 前端
     * 个数: 数字,大于0
     *
     * @param type
     * @param size
     * @return
     */
    @GET("api/random/data/{type}/{size}")
    Call getRandomData(@Path("type") String type,@Path("size") String size);

    @GET
    Observable getRandomDataRx(@Url String url);
}

4.Retrofit

  private void getData() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://gank.io/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        GankApi gankApi = retrofit.create(GankApi.class);

        Call data = gankApi.getRandomData("福利", "10");

        data.enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                //textView.setText(response.body().toString());

                List results = response.body().getResults();
                //Toast.makeText(context, ""+results.toString(), Toast.LENGTH_SHORT).show();
                getResults(results);

            }

            @Override
            public void onFailure(Call call, Throwable t) {

            }
        });
    }

5.Retrofit+Rxjava

 private void getDataRx() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://gank.io/")
                .addConverterFactory(GsonConverterFactory.create())
                //用到Rxjava的时候,需要加入这个
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();

        GankApi gankApi = retrofit.create(GankApi.class);

        Observable randomDataRx = gankApi.getRandomDataRx("https://gank.io/api/random/data/福利/10");

        randomDataRx.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer() {
                    @Override
                    public void accept(RandomData randomData) throws Exception {
                        List results = randomData.getResults();
                        getResults(results);
                    }
                });
    }

你可能感兴趣的:(Rxjava)