Android 网络请求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(不用Rxjava)

  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);
                    }
                });
    }

参考

常用的几种注解
retrofit添加header的几种方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值