HttpComponents??????????
???????????? ???????[ 2012/11/26 10:37:29 ] ????????
??????Java????????????????????????????????MINA??NETTY??GRIZZLY????????????????????????????Щ?????????????????original???????????(????????????????java.net.*???)???????????????????HttpComponents????????????????HttpClient????????綼???????ɡ?HttpComponents??HttpClient??”??“?е???guava??google-collection??????????HttpComponents?????Apache???????????????????????HttpЭ??????Java??????????????????????????????????????????????????(????HttpCore-bio??HttpCore-nio??HttpClient??HttpMIme??HttpCookie??)?????????????????(?????????ssl)
????HttpClient???????Connection management??Status management??Authentication Management??????????????????????η?????????????????????????(?????????httpClient 3??httpClient 4???д?????)?????????????????????Client????ɡ??????????????????apache??MPM IO?????в?????????????
??????????httpClient 4??????????????:
????[java] view plaincopyprint?
????/**
????* @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
????*/
????public void setReadTimeout(int timeout) {
????Validate.isTrue(timeout >= 0?? "Timeout must be a non-negative value");
??????
???·???
??????????????????
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