问题描述
我遇到了 URL 调用响应编码的问题。
因此,就在 Spring 的 WebClient 根据需要将主体响应转换为 String 对象之前,我需要访问 raw 主体响应以使用正确的 编码。所以,就在之前:
<execution>.flatMap(servletResponse -> {
Mono<String> mono = servletResponse.bodyToMono(String.class);
}
我需要访问原始 URL 调用响应;我想在“flatMap”之前。
所以...我一直在查看 Spring 文档中的“编解码器”,但是...所以;即使是为了测试,我也有:
-
myWriter 是一个实例:
EncoderHttpMessageWriter
。 -
myReader 是一个实例:
DecoderHttpMessageReader
。 - myWriter 处理 myDecoder,
Decoder
的一个实例。 - myReader 处理 myEncoder,
Encoder
的一个实例。
根据Spring Documentation about Codecs;并使用 WebClient Builder 的两个选项进行测试:
myWebClientBuilder = WebClient.Builder; // provided by Spring Context,myWebClientBuilder = WebClient.builder(); // "by hand"
因此,代码的相关部分如下所示(即使使用 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 无关。
还有其他更好的方法来执行此预操作吗?
非常感谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)