RestTemplate 支持 https 请求 发表于 2022-01-06 | 更新于 2022-04-26 | 分类于 Java | 阅读次数: | 字数: 2.5k | 时长 ≈ 2 分钟 标签 spring spring-boot RestTemplate 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162@Beanpublic RestTemplate restTemplate() { RequestConfig.Builder builder = RequestConfig.custom(); builder // 响应超时时间 .setSocketTimeout(30 * 1000) // 建立 TCP 超时时间 .setConnectTimeout(10 * 1000) // 从连接池中获取连接超时时间 .setConnectionRequestTimeout(5 * 1000) .setCookieSpec(CookieSpecs.IGNORE_COOKIES); RequestConfig defaultRequestConfig = builder.build(); HttpClientBuilder clientBuilder = HttpClientBuilder.create().useSystemProperties(); clientBuilder.setDefaultRequestConfig(defaultRequestConfig); // 禁用重试 clientBuilder.disableAutomaticRetries(); try { // SSL or TLS SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, new TrustManager[]{new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } }}, new java.security.SecureRandom()); // 设置 http 和 https 协议对应的处理 socket 链接工厂的对象 Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", PlainConnectionSocketFactory.INSTANCE) .register("https", new SSLConnectionSocketFactory(sc, NoopHostnameVerifier.INSTANCE)) .build(); PoolingHttpClientConnectionManager pool = new PoolingHttpClientConnectionManager(registry); // 整个连接池的最大支持连接数 pool.setMaxTotal(500); // 当前主机到目的主机的一个路由 pool.setDefaultMaxPerRoute(150); clientBuilder.setConnectionManager(pool); } catch (Exception e) { log.error("msg: {}", e.getMessage(), e); } CloseableHttpClient httpClient = clientBuilder.build(); HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient); RestTemplate restTemplate = new RestTemplate(factory); restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory())); restTemplate.setInterceptors(Collections.singletonList(new RestTemplateLoggingRequestInterceptor())); return restTemplate;} 本文作者: forever杨 本文链接: https://blog.yl-online.top/posts/e98e5e02.html 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。如果文章内容对你有用,请记录到你的笔记中。本博客站点随时会停止服务,请不要收藏、转载!