webclient返回空响应时出现问题

z8dt9xmd  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(375)

我在做一个项目,到目前为止一直在使用 org.springframework.web.client.RestTemplate 我最近了解到,这个类将被弃用,取而代之的是异步 org.springframework.web.reactive.function.client.WebClient 框架。现在我非常赞成这一点,因为我的应用程序在等待restemplate(get)调用的响应时遇到了长时间的延迟(在这段时间内,我可以做数据库之类的事情)。
我现在的问题是如果我打这样的电话:

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对象的字符串版本)。
但是,如果我将先前的调用更改为(我想这样做!):

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() 没有达到我的期望
当我使用restemplate时,有一种方法可以用该模板注册序列化程序(尽管这对于我来说不是必需的) JsonObject ),这对webclient也是必要的吗?如果是,你怎么做?
我将非常感激你的帮助。
谢谢
账单
n、 b.我不确定这是否有任何关联,但我正在访问的rest端点确实有ip限制,因此如果以某种方式 WebClient 如果要更改起始ip,这可能会产生一些影响。虽然我认为这更像是 4** 某种程度上,我没有看到这些!或者可能是一个媒体类型的问题,因为它是通过一个dmz,在那里卫报可能会改变一个'未经授权'的请求从 application/jsontext/* 例如。
另一点可能与此相关,即要成功启动应用程序,必须使用以下属性运行它: spring.main.web-application-type=none 更新
我现在有我的应用程序运行,虽然不是我想要的!
这个问题似乎是由需要我使用的团队pom(作为父pom)导入的可传递依赖项。我现在成功地开始了这个项目。但是仍然发现json对象(现在是jackson)仍然是空的(正如 object.isEmpty() ).
我的依赖项/版本现在是: org.springframework:5.2.8.RELEASE org.springframework.boot:2.3.3.RELEASE com.fasterxml.jackson:2.11.2 我知道我在和一个家长pom做斗争,这和我想做的是相反的,但是我想知道我真正需要的依赖是什么

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题