我正在尝试编写一个返回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;
});
}
我尝试返回null
,并在map
上检查是否为null,并相应地返回布尔值-map Single无法处理null
。...知道吗?
谢谢。
EDIT-1
我尝试过:
.onErrorResumeNext(err -> Single.just(Boolean.FALSE))
它不能编译。
答案 0 :(得分:0)
已解决:
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));
}