WebClient返回空响应的问题

问题描述

我正在研究一个项目,直到现在一直在使用org.springframework.web.client.RestTemplate 我最近了解到,不推荐使用此类,而推荐使用 Asynch org.springframework.web.reactive.function.client.WebClient框架。 现在,我非常支持此操作,因为我的应用程序在等待 RestTemplate(GET)调用的响应(此时我可以做数据库内容 etc。)。
我现在遇到的问题是,如果我像这样拨打电话:

final Mono<String> call = webClient
        .get()
        .uri("/base/recordpath/1?format=json")
        .header("Content-Type",MediaType.APPLICATION_JSON_VALUE)
        .accept(MediaType.APPLICATION_JSON)
        .retrieve()
        .bodyToMono(String.class)

当我拨打以下电话时:
System.out.println(call.block());
我得到了预期的输出(已填充的Json对象的String版本)。
但是,如果我将先前的呼叫更改为(我想这样做!):

final Mono<JsonObject> call = webClient
        .get()
        .uri("/base/recordpath/1?format=json")
        .header("Content-Type",MediaType.APPLICATION_JSON_VALUE)
        .accept(MediaType.APPLICATION_JSON)
        .retrieve()
        .bodyToMono(JsonObject.class)

当我这样做的时候:
System.out.println(call.block());
我只是得到{}而不是填充的JsonObject

所以看来bodyToMono()并没有达到我的预期

当我使用RestTemplate时,有一种方法可以向Template注册序列化程序(尽管JsonObject不需要这样做), WebClient也有必要吗?如果是这样,您该怎么做?
我将不胜感激。

谢谢

账单

我不确定这是否有任何相关性,但是我访问的其余端点确实有IP限制,因此,如果WebClient以某种方式更改了原始IP,则可能会产生一些影响。尽管我本来以为它更像某种4**,但我什么都看不到! 或者可能是媒体类型问题(例如正在通过DMZ的区域),例如,监护人可能会将“未经授权”的请求从application/json更改为text/*

可能与此相关的另一点是,要成功启动应用程序,必须使用以下属性运行它: spring.main.web-application-type=none

更新
现在,我的应用程序正在运行,尽管不是我想要的!
问题似乎是我需要使用的团队pom(作为父pom)导入的可传递依赖项。 现在,我成功地开始了该项目。但是仍然发现json对象(现在是杰克逊)仍然为空(如object.isEmpty()所报告)。
我现在的依存关系/版本为:
org.springframework:5.2.8.RELEASE
org.springframework.boot:2.3.3.RELEASE
com.fasterxml.jackson:2.11.2
我知道我正在与父pom对抗,这与正在尝试做的事情相反,但我想知道我真正需要的依赖项是什么

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)