/*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.http.impl.client;
import org.apache.http.HttpVersion;
import org.apache.http.annotation.Contract;
import org.apache.http.annotation.ThreadingBehavior;
import org.apache.http.client.protocol.RequestAddCookies;
import org.apache.http.client.protocol.RequestAuthCache;
import org.apache.http.client.protocol.RequestClientConnControl;
import org.apache.http.client.protocol.RequestDefaultHeaders;
import org.apache.http.client.protocol.RequestProxyAuthentication;
import org.apache.http.client.protocol.RequestTargetAuthentication;
import org.apache.http.client.protocol.ResponseProcessCookies;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.params.SyncBasicHttpParams;
import org.apache.http.protocol.BasicHttpProcessor;
import org.apache.http.protocol.HTTP;
import org.apache.http.protocol.RequestContent;
import org.apache.http.protocol.RequestExpectContinue;
import org.apache.http.protocol.RequestTargetHost;
import org.apache.http.protocol.RequestUserAgent;
import org.apache.http.util.VersionInfo;
Default implementation of HttpClient
pre-configured for most common use scenarios. Please see the Javadoc for createHttpProcessor()
for the details of the interceptors that are set up by default.
Additional interceptors can be added as follows, but
take care not to add the same interceptor more than once.
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.addRequestInterceptor(new RequestAcceptEncoding());
httpclient.addResponseInterceptor(new ResponseContentEncoding());
This class sets up the following parameters if not explicitly set:
- Version: HttpVersion.HTTP_1_1
- ContentCharset: HTTP.DEFAULT_CONTENT_CHARSET
- NoTcpDelay: true
- SocketBufferSize: 8192
- UserAgent: Apache-HttpClient/release (java 1.5)
The following parameters can be used to customize the behavior of this
class:
CoreProtocolPNames.PROTOCOL_VERSION
CoreProtocolPNames.STRICT_TRANSFER_ENCODING
CoreProtocolPNames.HTTP_ELEMENT_CHARSET
CoreProtocolPNames.USE_EXPECT_CONTINUE
CoreProtocolPNames.WAIT_FOR_CONTINUE
CoreProtocolPNames.USER_AGENT
CoreConnectionPNames.TCP_NODELAY
CoreConnectionPNames.SO_TIMEOUT
CoreConnectionPNames.SO_LINGER
CoreConnectionPNames.SO_REUSEADDR
CoreConnectionPNames.SOCKET_BUFFER_SIZE
CoreConnectionPNames.CONNECTION_TIMEOUT
CoreConnectionPNames.MAX_LINE_LENGTH
CoreConnectionPNames.MAX_HEADER_COUNT
CoreConnectionPNames.STALE_CONNECTION_CHECK
ConnRoutePNames.FORCED_ROUTE
ConnRoutePNames.LOCAL_ADDRESS
ConnRoutePNames.DEFAULT_PROXY
CookieSpecPNames.DATE_PATTERNS
CookieSpecPNames.SINGLE_COOKIE_HEADER
AuthPNames.CREDENTIAL_CHARSET
ClientPNames.COOKIE_POLICY
ClientPNames.HANDLE_AUTHENTICATION
ClientPNames.HANDLE_REDIRECTS
ClientPNames.MAX_REDIRECTS
ClientPNames.ALLOW_CIRCULAR_REDIRECTS
ClientPNames.VIRTUAL_HOST
ClientPNames.DEFAULT_HOST
ClientPNames.DEFAULT_HEADERS
ClientPNames.CONN_MANAGER_TIMEOUT
Since: 4.0 Deprecated: (4.3) use HttpClientBuilder
see also CloseableHttpClient
.
/**
* Default implementation of {@link org.apache.http.client.HttpClient} pre-configured
* for most common use scenarios.
* <p>
* Please see the Javadoc for {@link #createHttpProcessor()} for the details of the interceptors
* that are set up by default.
* <p>
* Additional interceptors can be added as follows, but
* take care not to add the same interceptor more than once.
* <pre>
* DefaultHttpClient httpclient = new DefaultHttpClient();
* httpclient.addRequestInterceptor(new RequestAcceptEncoding());
* httpclient.addResponseInterceptor(new ResponseContentEncoding());
* </pre>
* <p>
* This class sets up the following parameters if not explicitly set:
* <ul>
* <li>Version: HttpVersion.HTTP_1_1</li>
* <li>ContentCharset: HTTP.DEFAULT_CONTENT_CHARSET</li>
* <li>NoTcpDelay: true</li>
* <li>SocketBufferSize: 8192</li>
* <li>UserAgent: Apache-HttpClient/release (java 1.5)</li>
* </ul>
* <p>
* The following parameters can be used to customize the behavior of this
* class:
* <ul>
* <li>{@link org.apache.http.params.CoreProtocolPNames#PROTOCOL_VERSION}</li>
* <li>{@link org.apache.http.params.CoreProtocolPNames#STRICT_TRANSFER_ENCODING}</li>
* <li>{@link org.apache.http.params.CoreProtocolPNames#HTTP_ELEMENT_CHARSET}</li>
* <li>{@link org.apache.http.params.CoreProtocolPNames#USE_EXPECT_CONTINUE}</li>
* <li>{@link org.apache.http.params.CoreProtocolPNames#WAIT_FOR_CONTINUE}</li>
* <li>{@link org.apache.http.params.CoreProtocolPNames#USER_AGENT}</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#TCP_NODELAY}</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#SO_TIMEOUT}</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#SO_LINGER}</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#SO_REUSEADDR}</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#SOCKET_BUFFER_SIZE}</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#CONNECTION_TIMEOUT}</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_LINE_LENGTH}</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_HEADER_COUNT}</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#STALE_CONNECTION_CHECK}</li>
* <li>{@link org.apache.http.conn.params.ConnRoutePNames#FORCED_ROUTE}</li>
* <li>{@link org.apache.http.conn.params.ConnRoutePNames#LOCAL_ADDRESS}</li>
* <li>{@link org.apache.http.conn.params.ConnRoutePNames#DEFAULT_PROXY}</li>
* <li>{@link org.apache.http.cookie.params.CookieSpecPNames#DATE_PATTERNS}</li>
* <li>{@link org.apache.http.cookie.params.CookieSpecPNames#SINGLE_COOKIE_HEADER}</li>
* <li>{@link org.apache.http.auth.params.AuthPNames#CREDENTIAL_CHARSET}</li>
* <li>{@link org.apache.http.client.params.ClientPNames#COOKIE_POLICY}</li>
* <li>{@link org.apache.http.client.params.ClientPNames#HANDLE_AUTHENTICATION}</li>
* <li>{@link org.apache.http.client.params.ClientPNames#HANDLE_REDIRECTS}</li>
* <li>{@link org.apache.http.client.params.ClientPNames#MAX_REDIRECTS}</li>
* <li>{@link org.apache.http.client.params.ClientPNames#ALLOW_CIRCULAR_REDIRECTS}</li>
* <li>{@link org.apache.http.client.params.ClientPNames#VIRTUAL_HOST}</li>
* <li>{@link org.apache.http.client.params.ClientPNames#DEFAULT_HOST}</li>
* <li>{@link org.apache.http.client.params.ClientPNames#DEFAULT_HEADERS}</li>
* <li>{@link org.apache.http.client.params.ClientPNames#CONN_MANAGER_TIMEOUT}</li>
* </ul>
*
* @since 4.0
*
* @deprecated (4.3) use {@link HttpClientBuilder} see also {@link CloseableHttpClient}.
*/
@Contract(threading = ThreadingBehavior.SAFE_CONDITIONAL)
@Deprecated
public class DefaultHttpClient extends AbstractHttpClient {
Creates a new HTTP client from parameters and a connection manager.
Params: - params – the parameters
- conman – the connection manager
/**
* Creates a new HTTP client from parameters and a connection manager.
*
* @param params the parameters
* @param conman the connection manager
*/
public DefaultHttpClient(
final ClientConnectionManager conman,
final HttpParams params) {
super(conman, params);
}
Since: 4.1
/**
* @since 4.1
*/
public DefaultHttpClient(
final ClientConnectionManager conman) {
super(conman, null);
}
public DefaultHttpClient(final HttpParams params) {
super(null, params);
}
public DefaultHttpClient() {
super(null, null);
}
Creates the default set of HttpParams by invoking setDefaultHttpParams(HttpParams)
Returns: a new instance of SyncBasicHttpParams
with the defaults applied to it.
/**
* Creates the default set of HttpParams by invoking {@link DefaultHttpClient#setDefaultHttpParams(HttpParams)}
*
* @return a new instance of {@link SyncBasicHttpParams} with the defaults applied to it.
*/
@Override
protected HttpParams createHttpParams() {
final HttpParams params = new SyncBasicHttpParams();
setDefaultHttpParams(params);
return params;
}
Saves the default set of HttpParams in the provided parameter.
These are:
CoreProtocolPNames.PROTOCOL_VERSION
: 1.1
CoreProtocolPNames.HTTP_CONTENT_CHARSET
: ISO-8859-1
CoreConnectionPNames.TCP_NODELAY
: true
CoreConnectionPNames.SOCKET_BUFFER_SIZE
: 8192
CoreProtocolPNames.USER_AGENT
: Apache-HttpClient (Java 1.5)
/**
* Saves the default set of HttpParams in the provided parameter.
* These are:
* <ul>
* <li>{@link org.apache.http.params.CoreProtocolPNames#PROTOCOL_VERSION}:
* 1.1</li>
* <li>{@link org.apache.http.params.CoreProtocolPNames#HTTP_CONTENT_CHARSET}:
* ISO-8859-1</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#TCP_NODELAY}:
* true</li>
* <li>{@link org.apache.http.params.CoreConnectionPNames#SOCKET_BUFFER_SIZE}:
* 8192</li>
* <li>{@link org.apache.http.params.CoreProtocolPNames#USER_AGENT}:
* Apache-HttpClient (Java 1.5)</li>
* </ul>
*/
public static void setDefaultHttpParams(final HttpParams params) {
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.DEF_CONTENT_CHARSET.name());
HttpConnectionParams.setTcpNoDelay(params, true);
HttpConnectionParams.setSocketBufferSize(params, 8192);
HttpProtocolParams.setUserAgent(params, VersionInfo.getUserAgent("Apache-HttpClient",
"org.apache.http.client", DefaultHttpClient.class));
}
Create the processor with the following interceptors:
RequestDefaultHeaders
RequestContent
RequestTargetHost
RequestClientConnControl
RequestUserAgent
RequestExpectContinue
RequestAddCookies
ResponseProcessCookies
RequestAuthCache
RequestTargetAuthentication
RequestProxyAuthentication
Returns: the processor with the added interceptors.
/**
* Create the processor with the following interceptors:
* <ul>
* <li>{@link RequestDefaultHeaders}</li>
* <li>{@link RequestContent}</li>
* <li>{@link RequestTargetHost}</li>
* <li>{@link RequestClientConnControl}</li>
* <li>{@link RequestUserAgent}</li>
* <li>{@link RequestExpectContinue}</li>
* <li>{@link RequestAddCookies}</li>
* <li>{@link ResponseProcessCookies}</li>
* <li>{@link RequestAuthCache}</li>
* <li>{@link RequestTargetAuthentication}</li>
* <li>{@link RequestProxyAuthentication}</li>
* </ul>
* <p>
* @return the processor with the added interceptors.
*/
@Override
protected BasicHttpProcessor createHttpProcessor() {
final BasicHttpProcessor httpproc = new BasicHttpProcessor();
httpproc.addInterceptor(new RequestDefaultHeaders());
// Required protocol interceptors
httpproc.addInterceptor(new RequestContent());
httpproc.addInterceptor(new RequestTargetHost());
// Recommended protocol interceptors
httpproc.addInterceptor(new RequestClientConnControl());
httpproc.addInterceptor(new RequestUserAgent());
httpproc.addInterceptor(new RequestExpectContinue());
// HTTP state management interceptors
httpproc.addInterceptor(new RequestAddCookies());
httpproc.addInterceptor(new ResponseProcessCookies());
// HTTP authentication interceptors
httpproc.addInterceptor(new RequestAuthCache());
httpproc.addInterceptor(new RequestTargetAuthentication());
httpproc.addInterceptor(new RequestProxyAuthentication());
return httpproc;
}
}