休息服务 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() 您的流媒体。

exchangeretrieve的区别是:它们在return类型上不同; exchange 方法提供 ClientResponse 及其状态 headers,而 retrieve 方法是直接获取 body 的最短路径。你可以参考this