Rxjava+Retrofit简单使用,随机获取美女图片Demo - Go语言中文社区

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


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

这里写图片描述

资料

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<RandomData> getRandomData(@Path("type") String type,@Path("size") String size);

    @GET
    Observable<RandomData> 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<RandomData> data = gankApi.getRandomData("福利", "10");

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

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

            }

            @Override
            public void onFailure(Call<RandomData> 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<RandomData> randomDataRx = gankApi.getRandomDataRx("https://gank.io/api/random/data/福利/10");

        randomDataRx.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<RandomData>() {
                    @Override
                    public void accept(RandomData randomData) throws Exception {
                        List<RandomData.ResultsBean> results = randomData.getResults();
                        getResults(results);
                    }
                });
    }
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yu540135101/article/details/82718191
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢