HttpUtil.java 文件源码

java
阅读 23 收藏 0 点赞 0 评论 0

项目:snowflake-jdbc 作者:
/**
 * Build an Http client using our set of default.
 *
 * @return HttpClient object
 */
private static HttpClient buildHttpClient()
{
  // set timeout so that we don't wait forever.
  // Setup the default configuration for all requests on this client
  DefaultRequestConfig =
      RequestConfig.custom()
                   .setConnectTimeout(DEFAULT_CONNECTION_TIMEOUT)
                   .setConnectionRequestTimeout(DEFAULT_CONNECTION_TIMEOUT)
                   .setSocketTimeout(DEFAULT_HTTP_CLIENT_SOCKET_TIMEOUT)
                   .build();

  // enforce using tlsv1.2
  SSLContext sslContext = SSLContexts.createDefault();

  // cipher suites need to be picked up in code explicitly for jdk 1.7
  // https://stackoverflow.com/questions/44378970/
  String[] cipherSuites = decideCipherSuites();
  if (logger.isTraceEnabled())
  {
    logger.trace("Cipher suites used: {}", Arrays.toString(cipherSuites));
  }

  SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(
      sslContext,
      new String[] {"TLSv1.2"},
      cipherSuites,
      SSLConnectionSocketFactory.STRICT_HOSTNAME_VERIFIER);

  Registry<ConnectionSocketFactory> registry =
      RegistryBuilder.<ConnectionSocketFactory>create()
                     .register("https", sslSocketFactory)
                     .register("http",
                         PlainConnectionSocketFactory.getSocketFactory())
                     .build();

  // Build a connection manager with enough connections
  connectionManager = new PoolingHttpClientConnectionManager(registry);
  connectionManager.setMaxTotal(DEFAULT_MAX_CONNECTIONS);
  connectionManager.setDefaultMaxPerRoute(DEFAULT_MAX_CONNECTIONS_PER_ROUTE);

  httpClient =
      HttpClientBuilder.create()
                       .setDefaultRequestConfig(DefaultRequestConfig)
                       .setConnectionManager(connectionManager)
                       // Support JVM proxy settings
                       .useSystemProperties()
                       .setRedirectStrategy(new DefaultRedirectStrategy())
                       .setUserAgent("-")     // needed for Okta
                       .build();

  return httpClient;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号