Mono<ResponseObject> mono = webClient.post()
.uri(url.toString())
.header("Authorization", authToken)
.body(Mono.just(contract), contract.getClass())
.retrieve()
.bodyToMono(ResponseObject.class);
"success" : true,
"httpStatus": 200,
"messages" : [
"Informational message or, if not 200, then error messages"
],
result: {
"data": {}
}
这似乎是我想做的:Spring Webflux:Webclient:让body出现错误,但仍然不能让它工作。不确定exchange()是什么
正确的处理方法是通过.onerrorResume
,当出现任何错误时,它允许您使用函数订阅回退发布服务器。您可以查看生成的异常并返回自定义回退响应。
您可以这样做:
Mono<ResponseObject> mono = webClient.post()
.uri(url.toString())
.header("Authorization", authToken)
.bodyValue(contract)
.exchangeToMono(response -> {
if (response.statusCode().equals(HttpStatus.OK)) {
return response.bodyToMono(ResponseObject.class);
}
else if (response.statusCode().is4xxClientError()) {
return response.bodyToMono(ResponseObject.class);
}
else {
Mono<WebClientResponseException> wcre = response.createException();
// examine wcre and create custom ResponseObject
ResponseObject customRO = new ResponseObject();
customRO.setSuccess(false);
customRO.setHttpStatus(response.rawStatusCode());
// you can set more default properties in response here
return Mono.just( customRO );
}
});
此外,您不应该在Java代码中的任何地方使用.block()
。只需确保从REST控制器返回一个单字
即可。如果希望在返回客户端之前检查响应,可以在管道末尾的.map()
处理程序中这样做(就在.onerrorResume
处理程序之后)
.map(response -> {
// examine content of response
// in the end just return it
return response;
});
我试图通过使用Java+Spring+WebFlux开始反应性编程。 当我在endpoint上调用时,我得到一个 下面是上的服务层 我还尝试删除和中的concinting,但没有成功。
我正在编写一个java适配器,用于向WebService发布一些内容。在http服务中,我使用一个ExceptionHandler: 如果我用卷曲/邮递员来称呼的话,那很管用。 在成功的情况下,我希望从location头返回字符串。但是,例如,如果http-status为400,我如何抛出异常,并将正文中的错误消息添加到异常中呢? 谢谢
当我在netbeans 8.0.2中清理和构建项目时,会出现以下错误。如何解决这个问题
我正在尝试调用一个简单的RESTFul API,它使用WSO2 ESB发布用户名和密码,但在尝试使用Postman调用它时没有得到响应: RESTFul API URL为: 要从ESB调用的URL是 我在WSO2 ESB中进行的API配置是 我发布了一个简单的JSON元素: WSO2控制台显示以下消息: Info-LogMediator到:http://www.w3.org/2005/08/add
我想在以下条件下抛出自定义异常: > 如果我得到了json格式的正确错误响应,我想反序列化它,并在onStatus()中抛出名为CommonException的异常 如果作为响应的一部分接收HTML内容或反序列化未成功执行,则我希望抛出GenericeException,这是我在onErrorMap()中创建的 在抛出GenericException时,我希望将从下游响应获得的相同HttpStat
SI5+支持,这意味着我们现在可以构建一个反应消息传递系统。然而,这也意味着设计已经考虑周全,通常的错误处理方法不起作用。在反应流中,消息是(),它不会引发异常,但会发出错误通知。因此,消息上设置的错误通道标头是无用的,因为SI不知道导致了错误。考虑以下代码: 上面的代码片段中缺少的是将异常发送到消息上配置的错误通道。我们怎么能这么做?