多个请求进行翻新以合并结果 [英] Multiple requests with retrofit to combine results

查看:91
本文介绍了多个请求进行翻新以合并结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用翻新版(1.9)并试图找出如何调用2个api并合并结果的方法.

Im using retrofit (1.9) and trying to work out how i can call 2 apis and merge the results.

我猜应该在最后一个api返回响应后将结果合并...

I guess the results should be merged when last api has finished returning a response...

我该怎么做?

按照安东尼的回答,我尝试过以下方法:

Udpate, as per Antons answer I have tried the following:

添加到gradle中:

added to gradle:

  compile 'io.reactivex:rxjava:1.0.+'
    compile 'io.reactivex:rxandroid:0.23.+'

Api界面

 @GET("/maps/api/place/details/json")
    Observable<PlaceDetailResult1> getPlacesFrom1( @Query("key") String key,  @Query("placeid") String placeid);


@GET("api/places/{id}/ratings")
Observable<PlaceDetailResult2> getPlacesFrom2(@Path("id") String id);

片段

     IPlaces api = adapter.create(IPlaces.class); //endpoint1
     IPlaces api2 = adapter2.create(IPlaces.class); //endpoint2

    Observable.combineLatest(
            api.getPlacesFrom1("key", placeId),
            api2.getPlacesFrom2(placeId),
        new Func2<PlaceDetailResult1, PlaceDetailResult2, MergedReviews>() {
            @Override
            public MergedReviews call(PlaceDetailResult placeDetailResult1, PlaceDetailResult2 placeDetailResult2) {
                // processToMerge(  placeDetailResult1, placeDetailResult2)
                return mr;
            }

            })
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<MergedReviews>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onNext(MergedReviews mr) {

                    SetAdapter(mr.reviews);
                    SetPhotosAdapter(mr.photos);
                }
            });

也许值得注意的是,当我将RxJava添加到gradle时,我遇到了一些错误,该错误在我对gradle文件执行了 multiDexEnabled true 后消失了

One thing maybe worth noting, when I added RxJava to gradle i was getting some error, which went away after I did multiDexEnabled true in the gradle file

推荐答案

您可以使用RxJava并合并以下结果:

You can use RxJava and combine results like this: Combining API calls with RX Java

这里是教程,介绍如何使用RxJava和Retrofit 1.9 : http://randomdotnext.com/retrofit-rxjava/

Here is tutorial, how to use RxJava and Retrofit 1.9: http://randomdotnext.com/retrofit-rxjava/

这篇关于多个请求进行翻新以合并结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆