首页 > 解决方案 > 访问 Spring WebClient 响应正文 **BEFORE** 被解析

问题描述

我的 URL 调用响应编码有问题。

因此,就在 Spring 的WebClient将主体响应转换为 String 对象之前,我需要访问原始主体响应以使用正确的编码对其进行解析。所以,就在之前:

  <execution>.flatMap(servletResponse -> {
      Mono<String> mono = servletResponse.bodyToMono(String.class);
  }

我需要访问原始 URL 调用响应;我认为在“ flatMap ”之前。

所以...我一直在查看Spring 文档中的“编解码器”,但是...所以;即使是为了测试,我也有:

根据有关编解码器的 Spring 文档;并使用 WebClient Builder 的两个选项进行测试:

myWebClientBuilder = WebClient.Builder;    // provided by Spring Context,
myWebClientBuilder = WebClient.builder();  // "by hand"

因此,代码的相关部分如下所示(即使使用and也尝试过registerregisterWithDefaultConfig):

    WebClient.builder().codecs(consumer -> {
        consumer.customCodecs().register(myWriter.getEncoder());
        consumer.customCodecs().register(myWriter);
        consumer.customCodecs().register(myReader.getDecoder());
        consumer.customCodecs().register(myReader);
    })
    .build();

显示编解码器加载,内部基本方法被调用:

但是...没有使用任何read/ write... Mono<T>/Flux<T>方法。是否还有任何东西可以配置编解码器以正确解析具有正确编码的传入响应?

响应是一个字符串;一个老式的字符串,所有数据字段在一行中,稍后将根据有关字段位置和长度的规则进行解析;与JSONJackson无关。

还有其他更好的方法来执行此预操作吗?

提前谢谢了。

标签: springencodingwebclientreactivecodec

解决方案


推荐阅读