当前位置: 首页 > 知识库问答 >
问题:

将请求与 Retrofit2 和 RxJava2 相结合

公西星海
2023-03-14

我试图用相同的观察者观察两个请求。我的观察者

private BaseObserver<LoginResponse> loginObserver = new BaseObserver<LoginResponse>(this) {
    @Override
    public void onSubscribe(Disposable d) {
        super.onSubscribe(d);
        showLoading(true);
        Log.d(TAG, "onSubscribe: ");
    }

    @Override
    public void onNext(LoginResponse response) {
        super.onNext(response);
        Log.d(TAG, "onNext: ");
    }

    @Override
    public void onComplete() {
        super.onComplete();
        showLoading(false);
        Log.d(TAG, "onComplete: ");
    }

    @Override
    public void onError(Throwable e) {
        super.onError(e);
        showLoading(false);
    }
};

我的请求是使用Reformation 2构建的登录请求:

private void sendRequest(String username, String password) {
    IResourceAPI iResourceAPI = RetrofitClient.createIResourceClient(this);
    iResourceAPI.login(new LoginRequest(username, password))
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(loginObserver);
}

现在我想启动2个或更多请求并在onNext中逐个检查响应,当检查最后一个请求时,使用我的观察者执行on完整。有人能帮我吗?

提前致谢。

共有2个答案

蔺德曜
2023-03-14

听起来你好像在找合并运算符。

邰胤
2023-03-14

您正在寻找合并运算符:

通过使用Merge操作符,可以将多个可观察对象的输出组合起来,使它们像单个可观察对象一样工作。

只需修改您的请求,返回一个可观察值:

private Observable<LoginResponse> request(String username, String password) {
    IResourceAPI iResourceAPI = RetrofitClient.createIResourceClient(this);
    iResourceAPI.login(new LoginRequest(username, password))
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
}

然后合并:

Observable.merge<LoginResponse>(request(...), request(...))
    .subscribeWith(loginObserver);
 类似资料:
  • 可观察的如下所示。

  • 我使用Reformation2和RxJava2从服务器获取数据。我有以下格式的回复: 我得到以下异常: ApiService.class RetrofitClient.class 现在我正在使用如下的一些东西来获取数据: 有人请让我知道为什么我得到这个exception.Any帮助将不胜感激。 谢谢

  • 嗨,我有Flux,在迭代每个元素时,它会创建新的单声道。我也有其他单声道之外的通量。并要做到以下几点:当流量(与相应的内部单声道的结束),然后做第二个单声道。最大的挑战是单声道内部的流量从网络客户端请求中产生。作为起点,请看看“加载”方法。基本上没有webClient它的工作,但在情况下与webClient内部地图工作之后。使用Spring启动2 渐变依赖性:

  • 问题内容: 我正在使用Retrofit集成我的Web服务,但我不明白如何使用POST请求将JSON对象发送到服务器。我目前陷入困境,这是我的代码: 活动:- PostInterface:- 要求JSON:- 响应JSON:- 问题答案: 在gradle中使用这些 使用这两个POJO类........ LoginData.class LoginResult.class 像这样使用API 使用这样的呼

  • 我正在学习使用RxAndroid库的RxJava,同时使用改型来进行联网,并使用RetroLambda来使用Java8 lambdas。 我希望构建的应用程序具有以下功能: 允许用户键入对Wikipedia API的查询 我让它像这样工作: 现在,我想添加一个新的小部件,允许我的维基百科查询使用另一种语言。现在,我将选择一个开关,以“en”或“nl”作为维基百科url的前缀。 所以我从开关中创建了

  • 我使用REST API查询Person对象列表。最大限制是100人响应。我需要把所有的人都叫来,总数不详。第一个响应中有一个名为“next”的字段,包含下一页的url。我需要使用rxjava/rxandroid和referfit链接这些调用,直到最后一个响应有一个空的“next”字段。由于“Next”字段包含分页url,所有后续调用都将具有与第一个不同的url。做这件事最方便的方法是什么?