Retrofit + Rxjava 实践Demo(一)

Demo1 : 获取豆瓣电影TOP250

只用Retrofit的写法

API :

https://api.douban.com/v2/movie/top250

接口类(start: 起始值 count: 要获取的个数)

public interface IMovieService {

    @GET("v2/movie/top250")
    Call<MovieEntity> getMovie(@Query("start") int start, @Query("count") int count);
}

请求代码

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://api.douban.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        IMovieService iMovieService = retrofit.create(IMovieService.class);
        Call<MovieEntity> movie = iMovieService.getMovie(0, 10);
        movie.enqueue(new Callback<MovieEntity>() {
            @Override
            public void onResponse(Call<MovieEntity> call, Response<MovieEntity> response) {
//                Log.e(TAG, "onResponse: " + response.body());
                List<MovieEntity.SubjectsBean> subjects = response.body().getSubjects();
                for (MovieEntity.SubjectsBean subject : subjects) {
                    Log.e(TAG, "onResponse: " + subject.getTitle());
                }
            }

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

            }
        });

PS : 这里只是将获得的每个电影标题打印出来

添加rxjava支持

接口(返回值变为了Observable)

public interface IMovieService {
    @GET("v2/movie/top250")
    Observable<MovieEntity> getMovie(@Query("start") int start, @Query("count") int count);
}

请求代码

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://api.douban.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        IMovieService iMovieService = retrofit.create(IMovieService.class);
        iMovieService.getMovie(0,10)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .flatMap(new Func1<MovieEntity, Observable<MovieEntity.SubjectsBean>>() {
                    @Override
                    public Observable<MovieEntity.SubjectsBean> call(MovieEntity movieEntity) {
                       return Observable.from(movieEntity.getSubjects());
                    }
                })
                .subscribe(new Action1<MovieEntity.SubjectsBean>() {
                    @Override
                    public void call(MovieEntity.SubjectsBean subjectsBean) {
                        Log.e(TAG, "call: " + subjectsBean.getTitle());
                    }
                });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值