HttpComponents??????????
???????????? ???????[ 2012/11/26 10:37:29 ] ????????
????* header contains "gzip" (in any casing).
????*
????* @param httpResponse the resulting HttpResponse to check
????* @return whether the given response indicates a GZIP response
????*/
????protected boolean isGzipResponse(HttpResponse httpResponse) {
????Header encodingHeader = httpResponse.getFirstHeader(HTTP_HEADER_CONTENT_ENCODING);
????return (encodingHeader != null && encodingHeader.getValue() != null && encodingHeader
????.getValue().toLowerCase().contains(ENCODING_GZIP));
????}
????/**
????* Shutdown hook that closes the underlying
????* {@link org.apache.http.conn.ClientConnectionManager
????* ClientConnectionManager}'s connection pool?? if any.
????*/
????public void destroy() {
????getHttpClient().getConnectionManager().shutdown();
????}
????enum HttpMethod {
????GET??
????POST??
????HEAD??
????OPTIONS??
????PUT??
????DELETE??
????TRACE
????}
????}
????/**
????* @author von gosling 2012-3-2
????*/
????public class HttpComponentsClientExecutor implements DisposableBean {
????private static final int DEFAULT_MAX_TOTAL_CONNECTIONS = 100;
????private static final int DEFAULT_MAX_CONNECTIONS_PER_ROUTE = 5; //notice IE 6??7??8
????private static final int DEFAULT_CONN_TIMEOUT_MILLISECONDS = 5 * 1000;
????private static final int DEFAULT_READ_TIMEOUT_MILLISECONDS = 60 * 1000;
????private static final String HTTP_HEADER_CONTENT_ENCODING = "Content-Encoding";
????private static final String ENCODING_GZIP = "gzip";
????private HttpClient httpClient;
????/**
????* Create a new instance of the HttpComponentsClient with a default
????* {@link HttpClient} that uses a default
????* {@link org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager}.
????*/
????public HttpComponentsClientExecutor() {
????SchemeRegistry schemeRegistry = new SchemeRegistry();
????schemeRegistry.register(new Scheme("http"?? 80?? PlainSocketFactory.getSocketFactory()));
????schemeRegistry.register(new Scheme("https"?? 443?? SSLSocketFactory.getSocketFactory()));
????ThreadSafeClientConnManager connectionManager = new ThreadSafeClientConnManager(
????schemeRegistry);
????connectionManager.setMaxTotal(DEFAULT_MAX_TOTAL_CONNECTIONS);
????connectionManager.setDefaultMaxPerRoute(DEFAULT_MAX_CONNECTIONS_PER_ROUTE);
????this.httpClient = new DefaultHttpClient(connectionManager);
????setConnectTimeout(DEFAULT_CONN_TIMEOUT_MILLISECONDS);
????setReadTimeout(DEFAULT_READ_TIMEOUT_MILLISECONDS);
????}
????/**
????* Create a new instance of the HttpComponentsClient with the given
????* {@link HttpClient} instance.
????*
????* @param httpClient the HttpClient instance to use for this request
????*/
????public HttpComponentsClientExecutor(HttpClient httpClient) {
????Validate.notNull(httpClient?? "HttpClient must not be null");
????//notice: if you want to custom exception recovery mechanism
????//you should provide an implementation of the HttpRequestRetryHandler interface.
????this.httpClient = httpClient;
????}
????/**
????* Set the {@code HttpClient} used by this request.
????*/
????public void setHttpClient(HttpClient httpClient) {
????this.httpClient = httpClient;
????}
????/**
????* Return the{@code HttpClient} used by this request.
????*/
????public HttpClient getHttpClient() {
????return this.httpClient;
????}
????/**
????* Set the connection timeout for the underlying HttpClient. A timeout value
????* of 0 specifies an infinite timeout.
????*
????* @param timeout the timeout value in milliseconds
????*/
????public void setConnectTimeout(int timeout) {
????Validate.isTrue(timeout >= 0?? "Timeout must be a non-negative value");
????getHttpClient().getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT??
????timeout);
????}
????/**
????* Set the socket timeout (SO_TIMEOUT) in milliseconds?? which is the timeout
????* for waiting for data or?? put differently?? a maximum period inactivity
????* between two consecutive data packets.A timeout value of 0 specifies an
????* infinite timeout.
????*
????* @param timeout the timeout value in milliseconds
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11