我正在将WebFlux引入到一个微服务中,但在处理被调用服务的http错误时遇到了问题。
我有一个id列表,需要从另一个rest服务中检索一个实体。如果其中一个id返回http错误,我不想抛出异常,我想记录http错误,";return null";然后转到列表中的下一个id。
我曾尝试使用onStatus
,并在收到错误状态时返回Mono.empty
,但我得到了以下UnsupportedMediaException
:Content type 'application/octet-stream' not supported for bodyType=MyView
我的代码目前是这样的:
final MyView view = webClient.get()
.uri(builder -> builder.path("someUrl").build("someId"))
.retrieve()
.onStatus(HttpStatus::isError, response -> {
log.error("some error message");
return Mono.empty();
})
.bodyToMono(MyView.class)
.blockOptional()
.orElse(null);
任何关于我做错了什么的建议都将不胜感激。
线索在错误消息中:Content type 'application/octet-stream' not supported for bodyType=MyView
。
答案是设置content-type
:(