繁体   English   中英

如何使用Android RXJava链接链接的Retrofit调用并返回新的Object模型

[英]How to use Android RXJava to chain linked Retrofit calls and return new Object model

因此,在这种情况下,我们需要进行两次改装,

 @GET("/")
Observable<Search> searchMovies(@Query("apikey") String apiKey, @Query("s") String searchKey);

@GET("/")
Observable<Details> getMovie(@Query("apikey") String apiKey, @Query("t") String searchKey);

第一个是获得一个列表,然后对于该列表中的每个项目,我们都会进行一次新呼叫,以获取有关该电影的更多信息。

因此,我的第一个问题是如何在ond rxjava方法中将这两个调用链接在一起?

我从这个问题中得到的第二个问题是,我想将这2个调用和Rxjava方法链接在一起,然后根据每个响应中的几个字段返回一个新的可观察到的pojo对象。 例如,假设请求1包含“名称”,然后请求2包含“情节”。 我想根据这两个字段来组成MovieInformation pojo对象的列表,并将其包装成一个可观察的对象。

您应该使用flatMap运算符来链接这两个调用。

通常,getMovie()应该将searchMovies()的结果作为参数。 我想apiKey,searchKey是getMovies(apikey,searchKey)的结果:

yourretrofitservice.searchMovies(apikey,searchKey)

                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())

                //waiting for response of yourretrofitservice.searchMovies() 

                .flatMap(new Func1<Search, Observable<Details>>() {

                    @Override
                    public Observable<Details> call(Search search_result) {

                        return yourretrofitservice.searchMovies(apiKey, searchKey); //maybe searchKey = search_result (you should define how to set the result of the First Retrofit call in the second call

                    }

                })

                //waiting for the response  of yourretrofitservice.getMovie()

                .flatMap(new Func1<Search, Observable<YourPojoClass>>() {

                    @Override
                    public Observable<YourPojoClass> call(Search search_result) {
                        //do something with pojo_object 
                        return pojo_object; second call

                    }

                })


                .subscribe(new Action1<YourPojoClass>() {

                    @Override
                    public void call(YourPojoClass  pojo_object) {
                        //Your final action
                    }

                });

FlatMap运算符: http ://reactivex.io/documentation/operators/flatmap.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM