如何自定义 SpringWebFlux WebClient xml+rss JAXB 反序列化?

Posted

技术标签:

【中文标题】如何自定义 SpringWebFlux WebClient xml+rss JAXB 反序列化?【英文标题】:How to customize SpringWebFlux WebClient xml+rss JAXB deserialization? 【发布时间】:2019-06-26 23:07:18 【问题描述】:

查看spring webflux客户端的json配置示例:

   ExchangeStrategies strategies = ExchangeStrategies
        .builder()
        .codecs(clientDefaultCodecsConfigurer -> 

        //how to do the same but xml?
        clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(new ObjectMapper(), MediaType.APPLICATION_JSON));
            clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(new ObjectMapper(), MediaType.APPLICATION_JSON));

        ).build();

WebClient webClient = WebClient.builder().exchangeStrategies(strategies).build();

与this one 相同的问题,但针对 jaxb xml 序列化。是否有 JAXB 和 xml 的解码器实现?是否可以使用HttpMessageConverter作为webclient的解码器,使spring boot控制器和客户端实现一致?

【问题讨论】:

【参考方案1】:

我的猜测是org.springframework.http.codec.xml 包中的Jaxb2XmlDecoderJaxb2XmlEncoder 类:

ExchangeStrategies.builder()
        .codecs(configurer -> 
            configurer.defaultCodecs().jaxb2Decoder(new Jaxb2XmlDecoder());
            configurer.defaultCodecs().jaxb2Encoder(new Jaxb2XmlEncoder());
        )
        .build();

【讨论】:

以上是关于如何自定义 SpringWebFlux WebClient xml+rss JAXB 反序列化?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring WebFlux 上自定义未经授权的响应

WebCL 在主流浏览器上的实现现状如何? [关闭]

如何自定义 websocket 握手和/或添加过滤器?

Spring webflux 不会使用 @ModelAttribute 从路径变量填充自定义对象

如何自定义websocket握手和/或添加过滤器?

(WebFlux)001如何自定义注解实现功能