RestTemplate整合HttpClient
2016-10-23 19:14
375 查看
Spring框架的RestTemplate+Httpclient的代码配置:
配置代码
@Configuration public class RestTemplateConfig { private Logger log = Logger.getLogger(this.getClass()); @Bean public RestTemplate restTemplate() { RestTemplate restTemplate = new RestTemplate(); restTemplate.setRequestFactory(clientHttpRequestFactory()); restTemplate.setErrorHandler(new DefaultResponseErrorHandler()); return restTemplate; } @Bean public HttpComponentsClientHttpRequestFactory clientHttpRequestFactory() { try { HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { public boolean isTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { return true; } }).build(); httpClientBuilder.setSSLContext(sslContext); HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE; SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, hostnameVerifier); Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create().register("http", PlainConnectionSocketFactory.getSocketFactory()).register("https", sslConnectionSocketFactory).build();// 注册http和https请求 PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);// 开始设置连接池 poolingHttpClientConnectionManager.setMaxTotal(200); // 最大连接数200 poolingHttpClientConnectionManager.setDefaultMaxPerRoute(20); // 同路由并发数20 httpClientBuilder.setConnectionManager(poolingHttpClientConnectionManager); httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(2, true));// 重试次数 HttpClient httpClient = httpClientBuilder.build(); HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);// httpClient连接配置 clientHttpRequestFactory.setConnectTimeout(20000);// 连接超时 clientHttpRequestFactory.setReadTimeout(20000);// 数据读取超时时间 clientHttpRequestFactory.setConnectionRequestTimeout(200);// 连接不够用的等待时间 return clientHttpRequestFactory; } catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) { log.error(e.getMessage()); } return null; } }
相关文章推荐
- Web Service笔记(七):基于Restful服务端的客户端实现(HttpClient和 RestTemplate)
- Spring RestTemplate与apache HttpClient
- HttpClient与Spring RestTemplate
- Post Json 例子 Spring Rest Template & HttpClient
- annotation与httpclient(2)-- RestTemplate与HttpClient
- webservice的接口协议(HTTPClient 、RestTemplate HttpURLConnection)
- Why restTemplate.put() throws “HttpClientErrorException: 404 Not Found”
- 【REST】基于RESTful服务端的客户端实现(HttpClient、RestTemplate、HttpURLConnection)
- Httpclient与RestTemplate的比较(比httpClient更优雅的Restful URL访问)
- httpClient, RestTemplate
- java后端发送http请求使用RestTemplate(简单的都无敌了)
- RestTemplate 微信接口 text/plain HttpMessageConverter
- Springmvc+ResteasyClient 整合无法Post对象的问题
- httpClient访问http的rest接口
- http请求利器: 今天配置出了RESTClient,用MAVEN构建了UI运行包
- RestClient(Restsharp) ContentType setting and HttpBaseAuth setting tricky.
- Angular 4.3 HttpClient (Angular访问 REST Web 服务) 三、拦截器 Interceptors
- com.springframework.web.client.RestTemplate
- Httpclient和Spring的整合
- 使用火狐的restclient发送http接口post及get请求