springboot restTemplate配置
spring template配置示例
@Bean
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(6000);// 设置建立连接超时时间 毫秒
requestFactory.setReadTimeout(6000);// 设置读取数据超时时间 毫秒
RestTemplate restTemplate = new RestTemplate(requestFactory);
// jackson配置
ObjectMapper objectMapper = new ObjectMapper();
// 配置如果被序列化的对象没有可访问的属性 不报错,返回一个空的bean,即{}
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
// 创建json消息转换器
MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter(objectMapper);
List<MediaType> mediaTypes = new ArrayList<>(jacksonConverter.getSupportedMediaTypes());
// 为json消息转换器新增直接text_plain类型 避免遇到响应体是json,而响应头是text/plain类型无法找到适合的解析
mediaTypes.add(MediaType.TEXT_PLAIN);
jacksonConverter.setSupportedMediaTypes(mediaTypes);
List<HttpMessageConverter<?>> messageConverters = Arrays.asList(
new ByteArrayHttpMessageConverter(),
new StringHttpMessageConverter(Charset.forName("utf-8")),
new ResourceHttpMessageConverter(),
new SourceHttpMessageConverter<>(),
new FormHttpMessageConverter(),
jacksonConverter
);
restTemplate.setMessageConverters(messageConverters);
return restTemplate;
}
各种解析器默认支持的类型表
类名 | 支持的JavaType | 支持的MediaType |
---|---|---|
ByteArrayHttpMessageConverter | byte[] | application/octet-stream, / |
StringHttpMessageConverter | String | text/plain, / |
ResourceHttpMessageConverter | Resource | / |
SourceHttpMessageConverter | Source | application/xml, text/xml, application/+xml |
AllEncompassingFormHttpMessageConverter | Map<K, List<?>> | application/x-www-form-urlencoded, multipart/form-data |
MappingJackson2HttpMessageConverter | Object | application/json, application/+json |
Jaxb2RootElementHttpMessageConverter | Object | application/xml, text/xml, application/+xml |
JavaSerializationConverter | Serializable | x-java-serialization;charset=UTF-8 |
FastJsonHttpMessageConverter | Object | /* |
还没有评论,来说两句吧...