首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Spring5 WebClient进行异步调用

如何使用Spring5 WebClient进行异步调用
EN

Stack Overflow用户
提问于 2019-11-20 23:29:47
回答 3查看 1.9K关注 0票数 0

我是Spring Reactive框架的新手&尝试使用Spring5 WebClient进行异步调用。我能够成功地执行与synchronous相同的调用。但是面临着异步调用的问题。

我正在使用下面的代码进行异步调用:

代码语言:javascript
复制
Mono<ClientResponse> reponse = WebClient.builder().build().post()
.uri("http://api.com")
.body(BodyInserters.fromObject("data"))
.accept(MediaType.APPLICATION_JSON)
.header("Authorization", "Bearer blahblahblahblah")
.exchange();

// couple of logger messages and other statements

问题是它没有执行API调用,也没有给出响应。它继续执行其他语句,但从不调用API调用。

我不想使用block()方法,因为它会将其转换为同步调用。

我搜索了很多网站和文档,但异步调用使用的是相同的代码。但是不确定为什么它不工作。如果我错过了什么,有人能帮我吗?

EN

回答 3

Stack Overflow用户

发布于 2019-11-20 23:38:59

您需要订阅结果。这可以使用block() call来完成

订阅此单声道并无限期地阻塞,直到接收到下一个信号。返回该值,如果Mono为空,则返回null。在单声道错误的情况下,抛出原始异常(如果它是已检查的异常,则包装在RuntimeException中)。

如果没有订阅,调用将不会按照设计执行。但是,您可以在其他流中传递准备好的单声道来组合它们,但要获得结果,您必须在某个地方调用终止操作。

票数 0
EN

Stack Overflow用户

发布于 2021-06-24 06:32:39

下面的代码可以工作。

代码语言:javascript
复制
Mono<ClientResponse> reponse =
WebClient.builder().build().post()
.uri("http://api.com")
.body(BodyInserters.fromObject("data"))
.accept(MediaType.APPLICATION_JSON)
.header("Authorization", "Bearer blahblahblahblah")
.bodyToMono(ClientResponse.class)
.retrieve();
票数 0
EN

Stack Overflow用户

发布于 2021-12-03 16:14:29

您可以使用subscribe ()函数进行异步调用。希望它能起作用..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58957969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档