首页 > 解决方案 > Rxjava2:将异常映射到 Single

问题描述

我正在尝试编写一个返回的方法Single<Boolean>,它的功能是检查 HTTP 服务器是否处于活动状态。

所以它向服务器发送一个 ping 并且在服务器在线的情况下它工作正常,但如果服务器关闭它返回一个传播到的异常subscribe。我想捕获异常并将其映射到方法中false并在内部返回isAlive

这是我的尝试:

public Single<Boolean> isAlive()
  {
    return client().get(HEALTH_CHECK_PATH) //
        .rxSend() //
        .onErrorReturnItem(null) //
        .map(response -> {
          return response.statusCode() == HttpResponse.HTTP_STATUS_NO_CONTENT;
        });
  }

我试图返回nullmap检查 null 并相应地返回一个布尔值 - map Single 不处理null....任何想法?谢谢。

编辑-1

我试过了:

.onErrorResumeNext(err -> Single.just(Boolean.FALSE))

它不编译..

标签: rx-java2

解决方案


通过这样做解决:

public Single<Boolean> isAlive()
  {
    return client().get(HEALTH_CHECK_PATH) //
        .rxSend() //
        .map(response -> response.statusCode() == HttpResponse.HTTP_STATUS_NO_CONTENT)//
        .onErrorResumeNext(err -> Single.just(Boolean.FALSE));
  }

推荐阅读