All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xiongyingqi.common.http.HttpClientFactory Maven / Gradle / Ivy

The newest version!
package com.xiongyingqi.common.http;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ConnectionKeepAliveStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.protocol.HttpContext;

import java.util.concurrent.TimeUnit;

/**
 * @author xiongyingqi
 * @since 2018/1/21
 */
public class HttpClientFactory {
  public static final int TIME_OUT_SECONDS = 6;
  public static final int MAX_CONNECTION = 200;

  public static final ConnectionKeepAliveStrategy STRATEGY = new DefaultConnectionKeepAliveStrategy() {
    @Override
    public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
      long keepAliveDuration = super.getKeepAliveDuration(response, context);
      if (keepAliveDuration == -1) {
        return TIME_OUT_SECONDS * 10 * 1000;
      }
      return keepAliveDuration;
    }
  };

  public static HttpClient getClient() {
    CloseableHttpClient client = HttpClientBuilder
        .create()
//        .setDefaultRequestConfig(requestBuilder.build())
        .setConnectionTimeToLive(TIME_OUT_SECONDS * 2, TimeUnit.SECONDS)
        .setKeepAliveStrategy(STRATEGY)
        .setMaxConnTotal(MAX_CONNECTION)
        .setMaxConnPerRoute(MAX_CONNECTION / 4)
        .build();

    return client;

  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy