package com.senmesh.sdk.common.config; import java.util.List; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.client.RestTemplate; import com.google.common.collect.Lists; /** * @author sr on 2020-04-16 */ @Configuration public class ApiConfig { /** * 读取超时 **/ public static final int READ_TIME_OUT = 60000; /** * 连接超时 **/ public static final int CONNECT_TIME_OUT = 60000; @Bean @ConditionalOnMissingBean public RestTemplate restTemplate(ClientHttpRequestFactory factory) { RestTemplate restTemplate = new RestTemplate(factory); MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); List mediaTypes = Lists.newArrayList(MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON_UTF8, MediaType.APPLICATION_OCTET_STREAM, MediaType.APPLICATION_PDF, MediaType.APPLICATION_PROBLEM_JSON, MediaType.APPLICATION_PROBLEM_JSON_UTF8, MediaType.APPLICATION_PROBLEM_XML, MediaType.APPLICATION_RSS_XML, MediaType.APPLICATION_STREAM_JSON, MediaType.APPLICATION_XHTML_XML, MediaType.APPLICATION_XML, MediaType.IMAGE_GIF, MediaType.IMAGE_JPEG, MediaType.IMAGE_PNG, MediaType.MULTIPART_FORM_DATA, MediaType.TEXT_EVENT_STREAM, MediaType.TEXT_HTML, MediaType.TEXT_MARKDOWN, MediaType.TEXT_PLAIN, MediaType.TEXT_XML); converter.setSupportedMediaTypes(mediaTypes); restTemplate.getMessageConverters().add(converter); return restTemplate; } @Bean @ConditionalOnMissingBean public ClientHttpRequestFactory simpleClientHttpRequestFactory() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); // 单位为ms factory.setReadTimeout(READ_TIME_OUT); factory.setConnectTimeout(CONNECT_TIME_OUT); return factory; } }