网络请求:retrofit2 + rxjava2 的基本上使用以及简单封装

本文介绍了如何结合Retrofit2和Rxjava2进行网络请求,包括基本的网络请求设置、添加公共参数、日志打印,以及如何进行网络请求的封装,简化代码并提高可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

retrofit2是一款封装okhttp的优秀的网络请求框架,搭配rxjava时有出人意料的效果,每当出去面试的时候,被问及的频率也是极高的,于是新项目里也就顺理成章的接入了retrofit2+rxjava,并做了简易的封装,趁着今天周六,写一篇文章来记录一下。

1.retrofit 网络请求

github:https://github.com/square/retrofit

我们先来使用retrofit进行一个简单的网络请求,获取必应搜索的每日一图,这是一个简单的get请求,返回数据为一个json对象,每日一图的地址需要从对象里来获取。

api:https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN

1.1先定义一个接口:


public interface NetService {

    @GET("HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN")
    Call<FirstImageBean> getImage();
}

baseUrl截取为 https://cn.bing.com/  作为一个常量,放在常量类中。FirstImageBean为返回的json对应的实体类,可使用gsonformat直接生成,不做赘述。

1.2.在activity中进行请求

  public void getImage() {

//      1.获取retrofit对象
        Retrofit build = new Retrofit.Builder()
                .baseUrl(UrlConstant.URL_BING1)
                .addConverterFactory(GsonConverterFactory.create())//指定json解析
                .build();
//      获取接口类对象
        NetService netService = build.create(NetService.class);
        netService.getImage().enqueue(new Callback<FirstImageBean>() {
            @Override
            public void onResponse(Call<FirstImageBean> call, retrofit2.Response<FirstImageBean> response) {
                String url = response.body().getImages().get(0).getUrl();
            }
            @Override
            public void onFailure(Call<FirstImageBean> call, Throwable t) {
                LogUtil.i("请求失败:" + t.getMessage());
            }
        });
    }

2加入rxjava再来一次网络请求

2.1重新定义接口,这次我们返回的是个Obervable对象

  @GET("HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN")
    Observable<FirstImageBean> getBingDayImage();

2.2.在Activty中进行请求

 /**
     * 获取必应搜索每日图片
     */
    private void getBingImage() {
        OkHttpClient build = new OkHttpClient.Builder().build();
        Retrofit retrofit = new Retrofit.Builder()
                .client(build)
                .baseUrl(UrlConstant.URL_BING1)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
        NetService netService = retrofit.create(NetService.class);
        //获取每日一图
        netService.getBingDayImage()
                .subscribeOn(Schedulers.io())//
               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值