Retrofit和RxJava中的链接请求

时间:2020-05-05 02:30:03

标签: android rx-java retrofit2 chaining flatmap

我有字符串的ArrayList。对于每个字符串,我想使用Retrofit2调用API。每个API的响应都会提供一些我想使用的数据,然后从那里我要调用另一个API。最后它将返回字符串是否成功。我能够实现这一目标,但我希望所有API都应该像“同步”一样被调用。

这是我的代码。

for (int i = 0; i < domainList.size(); i++) {
        feedData3(domainList.get(i));
    }

private void feedData3(String domain) {
        Domain domain1 = new Domain();
        streamFetch(domain)
                .concatMap((Function<Contact, ObservableSource<?>>) contact -> {

                    domain1.setDomainData(contact.getDATA());
                    domain1.setDomain(domain);

                    return streamFetchData(domain1.getDomain(), domain1.getDomainData());
                })
                .subscribe(new Observer<Object>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        disposable = d;
                    }

                    @Override
                    public void onNext(Object o) {
                        Log.e(TAG, domain + ",Success");

                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.e(TAG, domain + ",failure = " + e.getLocalizedMessage());

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }


public Observable<Contact> streamFetch(String domain) {
        //GET API CALL
    }

public Observable<String> streamFetchData(String domainName, String domainData) {
        //POST API CALL
    }

0 个答案:

没有答案