配置RestTemplate支持更多的数据类型转换

在请求http的时候,可能返回的不会是通常的json类型,就是application/json,这种方式我们采用springboot类型的RestTemplate会报错,找不到对应的ResponseType对应的转换器,所以下面的配置可以采用MappingJackson2HttpMessageConverter转换所有的数据类型:

  @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) {
        RestTemplate restTemplate = builder.build();
        List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
        //放到第一个,使得以前的配置不生效
        MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        jackson2HttpMessageConverter.setSupportedMediaTypes(Lists.newArrayList(
                MediaType.APPLICATION_JSON,
                MediaType.APPLICATION_JSON_UTF8,
                // 支持所有的返回JSON数据,数据类型可以反序列化:  Content-Type: text/javascript;charset=utf-8
                // 不再使用,因为可能会引起其他的意外问题,反序列化最好转为String.class,不要使用Map.class 或者List.class
                MediaType.ALL
        ));
        jackson2HttpMessageConverter.setObjectMapper(JacksonUtils.getObjectMapper());
        jackson2HttpMessageConverter.setPrettyPrint(false);
        messageConverters.removeIf(m -> m.getClass().getName().equals(MappingJackson2HttpMessageConverter.class.getName()));
        messageConverters.add(0, jackson2HttpMessageConverter);

        return restTemplate;
    }

最后更新: 6/21/2019, 9:53:33 PM
本文浏览量