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

在使用WebClient时显示类之间的不一致org.springframework.web.reactive.function.client.ClientACK

赫连黎昕
2023-03-14

我已经开始使用WebClient(org.springframework.web.reactive.function.client.WebClient)调用rest服务。我有两门课,说实用。java和ServiceImpl。Java语言ServiceImpl。java是我使用WebClient的地方。我打的电话看起来像-

ClientResponse response = webClient.post()
            .uri(path)
            .body(Mono.just(inputDTO),InputDTO.class)
            .exchange()
            .block();

(上面的ClientACK是org.springframework.web.reactive.function.client.ClientACK)(我使用的是检索的交换instaed,因为我想要标题以及状态代码)

现在尝试将此响应转换为一些DTO-ResponseDTO。

Mono<ResponseEntity<ResponseDTO>> mono = response.toEntity(ResponseDTO.class);
        ResponseEntity<ResponseDTO> resEntity = mono.block();
        ResponseDTO myObj = resEntity.getBody();

所以myObj是ResponseDTO类的对象。

问题是-当我在我的实用程序类中执行“响应到响应DTO. java”的转换时,我得到myObj=null。但是如果我在我的ServiceImpl.java中这样做(就在调用post API之后),它会返回正确的正文(响应DTO对象)。即使我在ServiceI中以两种不同的方法执行转换和post调用操作,也会出现同样的问题mpl.java.我需要在这里配置一些东西吗?

共有1个答案

秦博达
2023-03-14

我弄清楚了问题所在。调用REST api后,响应中的body如果在我第一次从响应中读取后被刷新。我在服务实现类中有一个Sysout语句,我正在读取正文内容。

建议:只读取正文内容一次,并将其存储在变量中。在需要的地方使用它。

 类似资料:
  • 我似乎对一个简单的时间跟踪器有一个问题。它的设置方式是用户可以跟踪与项目相关的命中时间或自由输入某些内容。这意味着时间表对象总是有一个用户,但并不总是有一个项目。当我在连接到用户的数据库中创建一个时间表对象,但然后将一个与用户没有关联的项目连接到同一个时间跟踪对象时,可能会出现不一致。 解决这个问题的最佳方法是什么。我听说过定向联想,但我不知道它是如何解决问题的

  • 在调试我的应用程序时,我注意到我的RecycerView显示与提供的数据不一致,即。 > 如果我设置了一个闹钟(RecycerView中的TextView设置了日期),然后滚动我的RecycerView,日期显示在错误的位置。例如,如果我在第4项设置了日期,那么由于某种原因,第3项也设置了日期 我已经查看了文档,但不确定如何相应地修补。你能帮我吗? 我的OnBindViewholder:

  • 问题内容: 我正在尝试显示时间戳记- 我尝试了不同的查询方式,并且还尝试将用作值。似乎没有任何作用。我的目的是让该应用显示以前的素数和它们被发现的时间。该应用程序的初衷是让用户能够关闭/杀死该应用程序,并在重新启动该应用程序时从上次找到的素数恢复计数。如果您有任何暗示,我也将不胜感激。 这是PrimeDBManager类 头等舱 最后是MainActivity类 问题答案: 好的,既然您上传了项目

  • 我正在使用Java-Eclipse和oracle SGBD public DefaultTableModel getJoueurData(){

  • 问题内容: 我正在尝试从C#移植算法。我需要做的第一步是获取字节数组的md5。我似乎无法在C#和go实现之间获得一致的哈希值。 在C#中,我可以执行以下操作: 我得到 进行中: 产量: 我是在做一些奇怪的事情,还是实现方式实际上有所不同。我需要能够在旅途中复制C#行为。 我有一些可用的小提琴去和C#的,如果你想检查我的整个实现。 问题答案: 您正在滥用Sum函数的输入。sum的输入参数用于存储输出

  • 我需要运行 DAXPY 线性代数核的时序。天真地,我想尝试这样的事情: 如果需要,完整的代码链接位于末尾。 问题是,填充操作数 x 和 y 的内存访问将导致它们被放置在处理器缓存中。因此,在 DAXPY 调用中对内存的后续访问比在生产运行中实际访问要快得多。 我比较了两种解决这个问题的方法。第一种方法是通过clflush指令从所有级别的缓存中刷新操作数。第二种方法是读取一个非常大的数组,直到操作数