spring - 访问 Spring WebClient 响应正文 **BEFORE** 被解析
问题描述
我的 URL 调用响应编码有问题。
因此,就在 Spring 的WebClient将主体响应转换为 String 对象之前,我需要访问原始主体响应以使用正确的编码对其进行解析。所以,就在之前:
<execution>.flatMap(servletResponse -> {
Mono<String> mono = servletResponse.bodyToMono(String.class);
}
我需要访问原始 URL 调用响应;我认为在“ flatMap ”之前。
所以...我一直在查看Spring 文档中的“编解码器”,但是...所以;即使是为了测试,我也有:
- myWriter是一个实例:
EncoderHttpMessageWriter
。 - myReader是一个实例:
DecoderHttpMessageReader
。 - myWriter 处理myDecoder,一个
Decoder
. - myReader 处理myEncoder,一个
Encoder
.
根据有关编解码器的 Spring 文档;并使用 WebClient Builder 的两个选项进行测试:
myWebClientBuilder = WebClient.Builder; // provided by Spring Context,
myWebClientBuilder = WebClient.builder(); // "by hand"
因此,代码的相关部分如下所示(即使使用and也尝试过register
registerWithDefaultConfig
):
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>
方法。是否还有任何东西可以配置编解码器以正确解析具有正确编码的传入响应?
响应是一个字符串;一个老式的字符串,所有数据字段在一行中,稍后将根据有关字段位置和长度的规则进行解析;与JSON或Jackson无关。
还有其他更好的方法来执行此预操作吗?
提前谢谢了。
解决方案
推荐阅读
- ios - 使用委托和协议将数据从一个自定义 TableView 单元传递到另一个
- c# - 如何将 Kestrel 配置为使用随机动态端口并在运行时使用 ASP.NET Core 3.1 确定端口?
- php - Laravel Mail::failures() 方法不起作用
- spring-boot - 使用 maven 编译时抑制 spring-boot 日志
- javascript - 如何以指定格式获取 javascript 中的日期:day. 月年?
- python - 如果文件路径包含“,”或“=”,则无法在 Python 中打开文件路径
- php - Joomla 调用另一个模型并填充数据
- javascript - Ajax 中的模态 IF
- java - java.lang.IncompatibleClassChangeError:实现类 weblogic 12c
- python - 变量前的 % 是什么意思