gpt4 book ai didi

java - WebClient 从订阅返回值

转载 作者:行者123 更新时间:2023-12-02 01:23:29 28 4
gpt4 key购买 nike

我尝试使用网络客户端非阻塞方法验证验证码响应。所以它的工作,但我需要我的方法返回 boolean 值而不是异常。我如何从订阅返回值?

        webClient
.post()
.uri(verifyUri)
.exchange()
.flatMap(res -> res.bodyToMono(GoogleResponse.class))
.doOnError(e -> log.error("Request error"))
.subscribe(GoogleResponse -> {
try {
log.debug("Google response: {}", GoogleResponse);
if (!GoogleResponse.isSuccess()) {
throw new ReCaptchaInvalidException("reCaptcha response is not valid");
}
} catch (ReCaptchaInvalidException e) {
throw new ReCaptchaUnavailableException("Registration unavailable at this time. Please try again later.", e);
}
});

最佳答案

首先,您是在编写 Webflux 应用程序,还是仅在 Spring Web 应用程序中使用 WebClient 而不是 RestTemplate

如果在常规 Spring Web 应用程序中使用 WebClient,您只需为 WebClient 调用 Block() 即可获取数据 block 线程,直到数据已收到,然后给您返回数据。

如果在 Webflux 应用程序中使用 WebClient,您应该将 MonoFlux 全部返回到调用客户端,因为调用客户端就是订阅者。客户端(例如 React 应用程序、Angular 应用程序或其他应用程序)订阅您的 Spring 应用程序。您的 Spring 应用程序反过来订阅其他内容,然后将数据转发给原始订阅者。

您没有说明您正在编写哪种类型的应用程序,而且您的代码也很模糊,这反过来意味着答案也很模糊。

关于java - WebClient 从订阅返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57298101/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com