当前位置: 首页 > 知识库问答 >
问题:

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

微生青青
2023-03-14
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

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

共有1个答案

公羊子真
2023-03-14

您需要订阅结果。这可以通过block()调用完成:

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

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

 类似资料:
  • 我正在为一家德国公司评估Dart,将各种Java程序移植到Dart,并对结果进行比较和分析。在浏览器中,飞镖轻松获胜。对于服务器来说,软件性能似乎是一个严重的问题(请看我的这个问题),但这基本上得到了缓解。 现在我正在移植一些“简单”的命令行工具,我没想到会有任何严重的问题,但至少有一个问题。一些工具确实会发出HTTP请求来收集一些数据,独立的Dart虚拟机只以异步方式支持它们。纵观所有我能找到的

  • RestTemplate文档中的Spring注意: 注意:从5.0开始,这个类处于维护模式,只接受微小的更改请求和bug。请考虑使用org.springframework.web.reactive.client.WebClient,它具有更现代的API,支持同步、异步和流场景。 https://docs.spring.io/spring-framework/docs/current/javadoc

  • 问题内容: 有什么方法可以使用AngularJS进行同步调用吗? AngularJS文档不是很明确,也不是为了找出一些基本内容而扩展。 在服务上: 问题答案: 不是现在。如果查看源代码(从2012年10月开始),您会发现对XHR open的调用实际上是硬编码为异步的(第三个参数为true): 您需要编写自己的执行同步调用的服务。通常,由于JavaScript执行的性质,您通常不需要执行此操作,最终

  • 我开始学钩子了。但是我不明白异步调用是如何工作的。早些时候我被使用 然后调用我的,但是我应该用useDispat()做什么?如果我只是调用 然后我的< code > foo() don t < code > console . log(2) 我正在使用thunk

  • 问题内容: 我想在每次执行Flask路由时执行一个异步函数。为什么函数从不执行? 我还尝试将阻塞调用放在单独的线程中。但是它仍然没有调用该函数。 问题答案: 你可以将一些异步功能整合到Flask应用中,而不必完全将其转换为异步。 这将阻止Flask响应,直到异步函数返回为止,但是它仍然允许你做一些聪明的事情。我已经使用此模式使用aiohttp并行执行许多外部请求,然后在完成它们之后,我回到传统的f

  • 我有一个使用WebFlux和REST API的反应性Spring应用程序。每当用户调用我的API,我都需要调用一个公开WSDL的SOAP服务,执行一些操作并返回结果。 如何将对SOAP服务的调用与反应性WebFlux框架结合起来? 在我看来,我可以用两种不同的方式来做: 使用WebFlux的WebClient构造并发送SOAP消息。 在Mono/flux中使用WebServiceGatewaySu