访问 Spring WebClient 响应正文 **BEFORE** 被解析

问题描述

我遇到了 URL 调用响应编码的问题。

因此,就在 Spring 的 WebClient 根据需要将主体响应转换为 String 对象之前,我需要访问 raw 主体响应以使用正确的 编码。所以,就在之前:

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

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

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

  • myWriter一个实例:EncoderHttpMessageWriter
  • myReader一个实例:DecoderHttpMessageReader
  • myWriter 处理 myDecoderDecoder一个实例。
  • myReader 处理 myEncoderEncoder一个实例。

根据Spring Documentation about Codecs;并使用 WebClient Builder 的两个选项进行测试:

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

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

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

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

  • canDecode
  • canEncode
  • canRead
  • canWrite
  • getDecodableMimeTypes
  • getDecoder
  • getencodableMimeTypes
  • getEncoder

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

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

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

非常感谢。

解决方法

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

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

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