休息服务 Post 调用不与 Spring Web 客户端一起工作
Rest Service Post Calls Not working with Spring Webclient
我需要异步调用休息服务,我想使用 spring reactive 的 webclient 而不是 AsyncRestTemplate。然而,我的 url 根本没有被下面的代码调用。
Mono<Test> asyncResponse = webClientBuilder.build().post().uri(url).contentType(MediaType.APPLICATION_JSON)
.header("h1", h1).header("h2", h2)
.body(BodyInserters.fromObject(request))
.retrieve().bodyToMono(Test.class);
但是,如果我同步执行相同的操作,一切正常。
webClientBuilder.build().post().uri(url).contentType(MediaType.APPLICATION_JSON)
.header("h1", h1).header("h2", h2)
.body(BodyInserters.fromObject(request))
.exchange();`
我做错了什么?
exchange
并不意味着同步。它响应 Mono
。您需要 subscribe()
或 block()
您的流媒体。
与exchange
和retrieve
的区别是:它们在return类型上不同; exchange 方法提供 ClientResponse 及其状态 headers,而 retrieve 方法是直接获取 body 的最短路径。你可以参考this
我需要异步调用休息服务,我想使用 spring reactive 的 webclient 而不是 AsyncRestTemplate。然而,我的 url 根本没有被下面的代码调用。
Mono<Test> asyncResponse = webClientBuilder.build().post().uri(url).contentType(MediaType.APPLICATION_JSON)
.header("h1", h1).header("h2", h2)
.body(BodyInserters.fromObject(request))
.retrieve().bodyToMono(Test.class);
但是,如果我同步执行相同的操作,一切正常。
webClientBuilder.build().post().uri(url).contentType(MediaType.APPLICATION_JSON)
.header("h1", h1).header("h2", h2)
.body(BodyInserters.fromObject(request))
.exchange();`
我做错了什么?
exchange
并不意味着同步。它响应 Mono
。您需要 subscribe()
或 block()
您的流媒体。
与exchange
和retrieve
的区别是:它们在return类型上不同; exchange 方法提供 ClientResponse 及其状态 headers,而 retrieve 方法是直接获取 body 的最短路径。你可以参考this