988 lines
44 KiB
Plaintext
988 lines
44 KiB
Plaintext
4.0 Beta 1
|
|
-------------------
|
|
|
|
BETA1 release brings yet another round of API enhancements and
|
|
improvements in the area of connection management. Among the most notable
|
|
ones is the capability to handle stateful connections such as persistent
|
|
NTLM connections and private key authenticated SSL connections.
|
|
|
|
This is the first API stable release of HttpClient 4.0. All further
|
|
releases in the 4.0 code line will maintain API compatibility with this
|
|
release.
|
|
|
|
There has been a number of important bug fixes since ALPHA4. All upstream
|
|
projects are encouraged to upgrade to the latest release.
|
|
|
|
Please note HttpClient currently provides only limited support for NTLM
|
|
authentication. For details please see NTLM_SUPPORT.txt.
|
|
|
|
-------------------
|
|
|
|
Changelog:
|
|
-------------------
|
|
|
|
* [HTTPCLIENT-790] Protocol interceptors are now correctly invoked when
|
|
executing CONNECT methods.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-668] Do not use static loggers.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-781] Respect Keep-Alive header's timeout value.
|
|
Contributed by Sam Berlin <sberlin at apache.org>
|
|
|
|
* [HTTPCLIENT-779] Top-level classes (HttpClient, and HttpGet, HttpPut
|
|
and similar HttpMethods) throw fewer checked exceptions.
|
|
Contributed by Sam Berlin <sberlin at apache.org>
|
|
|
|
* HttpClient will throw an exception if an attempt is made to retry
|
|
a request with a non-repeatable request entity.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* Fixed request re-generation logic when retrying a failed request.
|
|
Auto-generated headers will no accumulate.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-424] Preemptive authentication no longer limited to BASIC
|
|
scheme only. HttpClient can be customized to authenticate preemptively
|
|
with DIGEST scheme.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-670] Pluggable hostname resolver.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-719] Clone support for HTTP request and cookie objects.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-776] Fixed concurrency issues with AbstractPoolEntry.
|
|
Contributed by Sam Berlin <sberlin at gmail.com>
|
|
|
|
* Resolved a long standing problem with HttpClient not taking into account
|
|
the user context when pooling / re-using connections. HttpClient now
|
|
correctly handles stateful / user specific connections such as persistent
|
|
NTLM connections and SSL connections with client side authentication.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-773] Improved handling of the 'expires' attribute by the
|
|
'Best Match' cookie spec.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* Partial NTLM support (requires an external NTLM engine). For details see
|
|
NTLM_SUPPORT.txt
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* Redesigned local execution context management.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
HttpClient API changes (generated by JarDiff 0.2)
|
|
--------------------------------------
|
|
|
|
Class removed:
|
|
public org.apache.http.client.AuthState extends java.lang.Object
|
|
Class removed:
|
|
public abstract org.apache.http.client.ClientRequestDirector extends java.lang.Object
|
|
Class removed:
|
|
public org.apache.http.conn.params.HttpConnParams extends java.lang.Object
|
|
Class removed:
|
|
public final org.apache.http.conn.params.HttpConnectionManagerParams extends java.lang.Object implements org.apache.http.conn.params.ConnManagerPNames
|
|
Class removed:
|
|
public org.apache.http.conn.params.HttpRouteParams extends java.lang.Object
|
|
Class removed:
|
|
public org.apache.http.impl.client.DefaultClientRequestDirector extends java.lang.Object implements org.apache.http.client.ClientRequestDirector
|
|
Class added:
|
|
public org.apache.http.auth.AuthState extends java.lang.Object
|
|
Class added:
|
|
public final org.apache.http.auth.BasicUserPrincipal extends java.lang.Object implements java.security.Principal
|
|
Class added:
|
|
public org.apache.http.auth.NTCredentials extends java.lang.Object implements org.apache.http.auth.Credentials
|
|
Class added:
|
|
public org.apache.http.auth.NTUserPrincipal extends java.lang.Object implements java.security.Principal
|
|
Class added:
|
|
public org.apache.http.client.ClientProtocolException extends java.io.IOException
|
|
Class added:
|
|
public org.apache.http.client.HttpResponseException extends org.apache.http.client.ClientProtocolException
|
|
Class added:
|
|
public org.apache.http.client.NonRepeatableRequestException extends org.apache.http.ProtocolException
|
|
Class added:
|
|
public abstract org.apache.http.client.RequestDirector extends java.lang.Object
|
|
Class added:
|
|
public abstract org.apache.http.client.ResponseHandler extends java.lang.Object
|
|
Class added:
|
|
public abstract org.apache.http.client.UserTokenHandler extends java.lang.Object
|
|
Class added:
|
|
public org.apache.http.client.utils.CloneUtils extends java.lang.Object
|
|
Class added:
|
|
public abstract org.apache.http.client.utils.Idn extends java.lang.Object
|
|
Class added:
|
|
public org.apache.http.client.utils.JdkIdn extends java.lang.Object implements org.apache.http.client.utils.Idn
|
|
Class added:
|
|
public org.apache.http.client.utils.Punycode extends java.lang.Object
|
|
Class added:
|
|
public org.apache.http.client.utils.Rfc3492Idn extends java.lang.Object implements org.apache.http.client.utils.Idn
|
|
Class added:
|
|
public abstract org.apache.http.conn.ConnectionKeepAliveStrategy extends java.lang.Object
|
|
Class added:
|
|
public final org.apache.http.conn.params.ConnManagerParams extends java.lang.Object implements org.apache.http.conn.params.ConnManagerPNames
|
|
Class added:
|
|
public org.apache.http.conn.params.ConnRouteParams extends java.lang.Object implements org.apache.http.conn.params.ConnRoutePNames
|
|
Class added:
|
|
public abstract org.apache.http.conn.scheme.HostNameResolver extends java.lang.Object
|
|
Class added:
|
|
public abstract org.apache.http.impl.auth.AuthSchemeBase extends java.lang.Object implements org.apache.http.auth.AuthScheme
|
|
Class added:
|
|
public abstract org.apache.http.impl.auth.NTLMEngine extends java.lang.Object
|
|
Class added:
|
|
public org.apache.http.impl.auth.NTLMEngineException extends org.apache.http.auth.AuthenticationException
|
|
Class added:
|
|
public org.apache.http.impl.auth.NTLMScheme extends org.apache.http.impl.auth.AuthSchemeBase
|
|
Class added:
|
|
public org.apache.http.impl.client.BasicResponseHandler extends java.lang.Object implements org.apache.http.client.ResponseHandler
|
|
Class added:
|
|
public org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy extends java.lang.Object implements org.apache.http.conn.ConnectionKeepAliveStrategy
|
|
Class added:
|
|
public org.apache.http.impl.client.DefaultRequestDirector extends java.lang.Object implements org.apache.http.client.RequestDirector
|
|
Class added:
|
|
public org.apache.http.impl.client.DefaultUserTokenHandler extends java.lang.Object implements org.apache.http.client.UserTokenHandler
|
|
Class added:
|
|
public org.apache.http.impl.cookie.PublicSuffixFilter extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
|
|
Class added:
|
|
public org.apache.http.impl.cookie.PublicSuffixListParser extends java.lang.Object
|
|
Class changed: org.apache.http.auth.Credentials
|
|
Methods removed:
|
|
public abstract java.lang.String getPrincipalName();
|
|
|
|
Methods added:
|
|
public abstract java.security.Principal getUserPrincipal();
|
|
|
|
Class changed: org.apache.http.auth.UsernamePasswordCredentials
|
|
Methods removed:
|
|
public java.lang.String getPrincipalName();
|
|
public java.lang.String toText();
|
|
|
|
Methods added:
|
|
public java.lang.String getUserName();
|
|
public java.security.Principal getUserPrincipal();
|
|
|
|
Class changed: org.apache.http.client.HttpClient
|
|
Methods removed:
|
|
public abstract org.apache.http.protocol.HttpContext getDefaultContext();
|
|
|
|
Methods added:
|
|
public abstract java.lang.Object execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.client.ResponseHandler) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
public abstract java.lang.Object execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.client.ResponseHandler, org.apache.http.protocol.HttpContext) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
public abstract java.lang.Object execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.client.ResponseHandler) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
public abstract java.lang.Object execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.client.ResponseHandler, org.apache.http.protocol.HttpContext) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
|
|
Method changed:
|
|
old:
|
|
public abstract org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest) throws org.apache.http.HttpException, java.io.IOException;
|
|
|
|
new:
|
|
public abstract org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
|
|
Method changed:
|
|
old:
|
|
public abstract org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException;
|
|
|
|
new:
|
|
public abstract org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
|
|
Method changed:
|
|
old:
|
|
public abstract org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest) throws org.apache.http.HttpException, java.io.IOException;
|
|
|
|
new:
|
|
public abstract org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
|
|
Method changed:
|
|
old:
|
|
public abstract org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException;
|
|
|
|
new:
|
|
public abstract org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.protocol.HttpContext) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
|
|
Class changed: org.apache.http.client.methods.HttpDelete
|
|
Method changed:
|
|
old:
|
|
public HttpDelete(java.lang.String) throws java.net.URISyntaxException;
|
|
|
|
new:
|
|
public HttpDelete(java.lang.String);
|
|
|
|
Class changed: org.apache.http.client.methods.HttpEntityEnclosingRequestBase
|
|
Methods added:
|
|
public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
|
|
|
|
Class descriptor changed:
|
|
old:
|
|
package abstract org.apache.http.client.methods.HttpEntityEnclosingRequestBase extends org.apache.http.client.methods.HttpRequestBase implements org.apache.http.HttpEntityEnclosingRequest
|
|
new:
|
|
public abstract org.apache.http.client.methods.HttpEntityEnclosingRequestBase extends org.apache.http.client.methods.HttpRequestBase implements org.apache.http.HttpEntityEnclosingRequest
|
|
Class changed: org.apache.http.client.methods.HttpGet
|
|
Method changed:
|
|
old:
|
|
public HttpGet(java.lang.String) throws java.net.URISyntaxException;
|
|
|
|
new:
|
|
public HttpGet(java.lang.String);
|
|
|
|
Class changed: org.apache.http.client.methods.HttpHead
|
|
Method changed:
|
|
old:
|
|
public HttpHead(java.lang.String) throws java.net.URISyntaxException;
|
|
|
|
new:
|
|
public HttpHead(java.lang.String);
|
|
|
|
Class changed: org.apache.http.client.methods.HttpOptions
|
|
Method changed:
|
|
old:
|
|
public HttpOptions(java.lang.String) throws java.net.URISyntaxException;
|
|
|
|
new:
|
|
public HttpOptions(java.lang.String);
|
|
|
|
Class changed: org.apache.http.client.methods.HttpPost
|
|
Method changed:
|
|
old:
|
|
public HttpPost(java.lang.String) throws java.net.URISyntaxException;
|
|
|
|
new:
|
|
public HttpPost(java.lang.String);
|
|
|
|
Class changed: org.apache.http.client.methods.HttpPut
|
|
Method changed:
|
|
old:
|
|
public HttpPut(java.lang.String) throws java.net.URISyntaxException;
|
|
|
|
new:
|
|
public HttpPut(java.lang.String);
|
|
|
|
Class changed: org.apache.http.client.methods.HttpRequestBase
|
|
Methods added:
|
|
public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
|
|
public boolean isAborted();
|
|
|
|
Class descriptor changed:
|
|
old:
|
|
package abstract org.apache.http.client.methods.HttpRequestBase extends org.apache.http.message.AbstractHttpMessage implements org.apache.http.client.methods.HttpUriRequest, org.apache.http.client.methods.AbortableHttpRequest
|
|
new:
|
|
public abstract org.apache.http.client.methods.HttpRequestBase extends org.apache.http.message.AbstractHttpMessage implements org.apache.http.client.methods.HttpUriRequest, org.apache.http.client.methods.AbortableHttpRequest, java.lang.Cloneable
|
|
Class changed: org.apache.http.client.methods.HttpTrace
|
|
Method changed:
|
|
old:
|
|
public HttpTrace(java.lang.String) throws java.net.URISyntaxException;
|
|
|
|
new:
|
|
public HttpTrace(java.lang.String);
|
|
|
|
Class changed: org.apache.http.client.methods.HttpUriRequest
|
|
Methods added:
|
|
public abstract void abort() throws java.lang.UnsupportedOperationException;
|
|
public abstract boolean isAborted();
|
|
|
|
Class changed: org.apache.http.client.params.ClientPNames
|
|
Fields removed:
|
|
public final static java.lang.String CONNECTION_MANAGER_TIMEOUT = http.connection-manager.timeout;
|
|
public final static java.lang.String PREEMPTIVE_AUTHENTICATION = http.protocol.authentication-preemptive;
|
|
|
|
Class changed: org.apache.http.client.params.ClientParamBean
|
|
Methods removed:
|
|
public void setConnectionManagerTimeout(long);
|
|
public void setPreemptiveAuthentication(boolean);
|
|
|
|
Class changed: org.apache.http.client.params.HttpClientParams
|
|
Methods removed:
|
|
public static long getConnectionManagerTimeout(org.apache.http.params.HttpParams);
|
|
public static boolean isAuthenticationPreemptive(org.apache.http.params.HttpParams);
|
|
public static void setAuthenticationPreemptive(org.apache.http.params.HttpParams, boolean);
|
|
public static void setConnectionManagerTimeout(org.apache.http.params.HttpParams, long);
|
|
|
|
Class changed: org.apache.http.client.protocol.ClientContext
|
|
Fields added:
|
|
public final static java.lang.String AUTH_SCHEME_PREF = http.auth.scheme-pref;
|
|
public final static java.lang.String USER_TOKEN = http.user-token;
|
|
|
|
Class changed: org.apache.http.client.protocol.ClientContextConfigurer
|
|
Methods added:
|
|
public void setAuthSchemePref(java.util.List);
|
|
public void setAuthSchemeRegistry(org.apache.http.auth.AuthSchemeRegistry);
|
|
public void setCookieSpecRegistry(org.apache.http.cookie.CookieSpecRegistry);
|
|
public void setCredentialsProvider(org.apache.http.client.CredentialsProvider);
|
|
|
|
Class descriptor changed:
|
|
old:
|
|
public org.apache.http.client.protocol.ClientContextConfigurer extends java.lang.Object
|
|
new:
|
|
public org.apache.http.client.protocol.ClientContextConfigurer extends java.lang.Object implements org.apache.http.client.protocol.ClientContext
|
|
Class changed: org.apache.http.conn.BasicManagedEntity
|
|
Field changed:
|
|
old:
|
|
protected boolean attemptReuse;
|
|
|
|
new:
|
|
protected final boolean attemptReuse;
|
|
|
|
Class changed: org.apache.http.conn.ClientConnectionManager
|
|
Methods removed:
|
|
public abstract void releaseConnection(org.apache.http.conn.ManagedClientConnection);
|
|
|
|
Methods added:
|
|
public abstract void closeExpiredConnections();
|
|
public abstract void releaseConnection(org.apache.http.conn.ManagedClientConnection, long, java.util.concurrent.TimeUnit);
|
|
|
|
Class changed: org.apache.http.conn.ManagedClientConnection
|
|
Methods added:
|
|
public abstract void setIdleDuration(long, java.util.concurrent.TimeUnit);
|
|
|
|
Class changed: org.apache.http.conn.params.ConnManagerPNames
|
|
Fields added:
|
|
public final static java.lang.String TIMEOUT = http.conn-manager.timeout;
|
|
|
|
Class changed: org.apache.http.conn.params.ConnManagerParamBean
|
|
Methods added:
|
|
public void setTimeout(long);
|
|
|
|
Class changed: org.apache.http.conn.scheme.PlainSocketFactory
|
|
Methods added:
|
|
public PlainSocketFactory();
|
|
public PlainSocketFactory(org.apache.http.conn.scheme.HostNameResolver);
|
|
|
|
Class changed: org.apache.http.conn.ssl.SSLSocketFactory
|
|
Methods removed:
|
|
public SSLSocketFactory(java.lang.String, java.security.KeyStore, java.lang.String, java.security.KeyStore, java.security.SecureRandom) throws java.security.NoSuchAlgorithmException, java.security.KeyManagementException, java.security.KeyStoreException, java.security.UnrecoverableKeyException;
|
|
|
|
Methods added:
|
|
public SSLSocketFactory(java.lang.String, java.security.KeyStore, java.lang.String, java.security.KeyStore, java.security.SecureRandom, org.apache.http.conn.scheme.HostNameResolver) throws java.security.NoSuchAlgorithmException, java.security.KeyManagementException, java.security.KeyStoreException, java.security.UnrecoverableKeyException;
|
|
public SSLSocketFactory(javax.net.ssl.SSLContext);
|
|
public SSLSocketFactory(javax.net.ssl.SSLContext, org.apache.http.conn.scheme.HostNameResolver);
|
|
|
|
Class changed: org.apache.http.impl.auth.DigestScheme
|
|
Methods added:
|
|
public void overrideParamter(java.lang.String, java.lang.String);
|
|
|
|
Class changed: org.apache.http.impl.auth.RFC2617Scheme
|
|
Methods removed:
|
|
public boolean isProxy();
|
|
public void processChallenge(org.apache.http.Header) throws org.apache.http.auth.MalformedChallengeException;
|
|
|
|
Methods added:
|
|
protected void parseChallenge(org.apache.http.util.CharArrayBuffer, int, int) throws org.apache.http.auth.MalformedChallengeException;
|
|
|
|
Class descriptor changed:
|
|
old:
|
|
public abstract org.apache.http.impl.auth.RFC2617Scheme extends java.lang.Object implements org.apache.http.auth.AuthScheme
|
|
new:
|
|
public abstract org.apache.http.impl.auth.RFC2617Scheme extends org.apache.http.impl.auth.AuthSchemeBase
|
|
Class changed: org.apache.http.impl.client.AbstractHttpClient
|
|
Methods removed:
|
|
protected org.apache.http.client.ClientRequestDirector createClientRequestDirector(org.apache.http.conn.ClientConnectionManager, org.apache.http.ConnectionReuseStrategy, org.apache.http.conn.routing.HttpRoutePlanner, org.apache.http.protocol.HttpProcessor, org.apache.http.client.HttpRequestRetryHandler, org.apache.http.client.RedirectHandler, org.apache.http.client.AuthenticationHandler, org.apache.http.client.AuthenticationHandler, org.apache.http.params.HttpParams);
|
|
public final synchronized org.apache.http.protocol.HttpContext getDefaultContext();
|
|
protected abstract void populateContext(org.apache.http.protocol.HttpContext);
|
|
|
|
Methods added:
|
|
protected org.apache.http.client.RequestDirector createClientRequestDirector(org.apache.http.protocol.HttpRequestExecutor, org.apache.http.conn.ClientConnectionManager, org.apache.http.ConnectionReuseStrategy, org.apache.http.conn.ConnectionKeepAliveStrategy, org.apache.http.conn.routing.HttpRoutePlanner, org.apache.http.protocol.HttpProcessor, org.apache.http.client.HttpRequestRetryHandler, org.apache.http.client.RedirectHandler, org.apache.http.client.AuthenticationHandler, org.apache.http.client.AuthenticationHandler, org.apache.http.client.UserTokenHandler, org.apache.http.params.HttpParams);
|
|
protected abstract org.apache.http.conn.ConnectionKeepAliveStrategy createConnectionKeepAliveStrategy();
|
|
protected abstract org.apache.http.protocol.HttpRequestExecutor createRequestExecutor();
|
|
protected abstract org.apache.http.client.UserTokenHandler createUserTokenHandler();
|
|
public java.lang.Object execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.client.ResponseHandler) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
public java.lang.Object execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.client.ResponseHandler, org.apache.http.protocol.HttpContext) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
public java.lang.Object execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.client.ResponseHandler) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
public java.lang.Object execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.client.ResponseHandler, org.apache.http.protocol.HttpContext) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
public final synchronized org.apache.http.conn.ConnectionKeepAliveStrategy getConnectionKeepAliveStrategy();
|
|
public final synchronized org.apache.http.protocol.HttpRequestExecutor getRequestExecutor();
|
|
public final synchronized org.apache.http.client.UserTokenHandler getUserTokenHandler();
|
|
public synchronized void setKeepAliveStrategy(org.apache.http.conn.ConnectionKeepAliveStrategy);
|
|
public synchronized void setUserTokenHandler(org.apache.http.client.UserTokenHandler);
|
|
|
|
Method changed:
|
|
old:
|
|
public final org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest) throws org.apache.http.HttpException, java.io.IOException;
|
|
|
|
new:
|
|
public final org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
|
|
Method changed:
|
|
old:
|
|
public final org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException;
|
|
|
|
new:
|
|
public final org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
|
|
Method changed:
|
|
old:
|
|
public final org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest) throws org.apache.http.HttpException, java.io.IOException;
|
|
|
|
new:
|
|
public final org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
|
|
Method changed:
|
|
old:
|
|
public final org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException;
|
|
|
|
new:
|
|
public final org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.protocol.HttpContext) throws java.io.IOException, org.apache.http.client.ClientProtocolException;
|
|
|
|
Class changed: org.apache.http.impl.client.DefaultHttpClient
|
|
Methods removed:
|
|
protected void populateContext(org.apache.http.protocol.HttpContext);
|
|
|
|
Methods added:
|
|
protected org.apache.http.conn.ConnectionKeepAliveStrategy createConnectionKeepAliveStrategy();
|
|
protected org.apache.http.protocol.HttpRequestExecutor createRequestExecutor();
|
|
protected org.apache.http.client.UserTokenHandler createUserTokenHandler();
|
|
|
|
Class changed: org.apache.http.impl.client.EntityEnclosingRequestWrapper
|
|
Methods added:
|
|
public boolean isRepeatable();
|
|
|
|
Class descriptor changed:
|
|
old:
|
|
package org.apache.http.impl.client.EntityEnclosingRequestWrapper extends org.apache.http.impl.client.RequestWrapper implements org.apache.http.HttpEntityEnclosingRequest
|
|
new:
|
|
public org.apache.http.impl.client.EntityEnclosingRequestWrapper extends org.apache.http.impl.client.RequestWrapper implements org.apache.http.HttpEntityEnclosingRequest
|
|
Class changed: org.apache.http.impl.client.RequestWrapper
|
|
Methods added:
|
|
public void abort() throws java.lang.UnsupportedOperationException;
|
|
public int getExecCount();
|
|
public void incrementExecCount();
|
|
public boolean isAborted();
|
|
public boolean isRepeatable();
|
|
public void resetHeaders();
|
|
|
|
Class descriptor changed:
|
|
old:
|
|
package org.apache.http.impl.client.RequestWrapper extends org.apache.http.message.AbstractHttpMessage implements org.apache.http.client.methods.HttpUriRequest
|
|
new:
|
|
public org.apache.http.impl.client.RequestWrapper extends org.apache.http.message.AbstractHttpMessage implements org.apache.http.client.methods.HttpUriRequest
|
|
Class changed: org.apache.http.impl.conn.AbstractClientConnAdapter
|
|
Methods added:
|
|
public void setIdleDuration(long, java.util.concurrent.TimeUnit);
|
|
|
|
Class changed: org.apache.http.impl.conn.AbstractPoolEntry
|
|
Methods removed:
|
|
protected void resetTrackedRoute();
|
|
|
|
Methods added:
|
|
protected void shutdownEntry();
|
|
|
|
Field changed:
|
|
old:
|
|
protected volatile org.apache.http.conn.OperatedClientConnection connection;
|
|
|
|
new:
|
|
protected final org.apache.http.conn.OperatedClientConnection connection;
|
|
|
|
Class changed: org.apache.http.impl.conn.DefaultClientConnection
|
|
Method changed:
|
|
old:
|
|
public void opening(java.net.Socket, org.apache.http.HttpHost);
|
|
|
|
new:
|
|
public void opening(java.net.Socket, org.apache.http.HttpHost) throws java.io.IOException;
|
|
|
|
Class changed: org.apache.http.impl.conn.IdleConnectionHandler
|
|
Methods removed:
|
|
public void add(org.apache.http.HttpConnection);
|
|
public void remove(org.apache.http.HttpConnection);
|
|
|
|
Methods added:
|
|
public void add(org.apache.http.HttpConnection, long, java.util.concurrent.TimeUnit);
|
|
public void closeExpiredConnections();
|
|
public boolean remove(org.apache.http.HttpConnection);
|
|
|
|
Class changed: org.apache.http.impl.conn.LoggingSessionInputBuffer
|
|
Class descriptor changed:
|
|
old:
|
|
package org.apache.http.impl.conn.LoggingSessionInputBuffer extends java.lang.Object implements org.apache.http.io.SessionInputBuffer
|
|
new:
|
|
public org.apache.http.impl.conn.LoggingSessionInputBuffer extends java.lang.Object implements org.apache.http.io.SessionInputBuffer
|
|
Class changed: org.apache.http.impl.conn.LoggingSessionOutputBuffer
|
|
Class descriptor changed:
|
|
old:
|
|
package org.apache.http.impl.conn.LoggingSessionOutputBuffer extends java.lang.Object implements org.apache.http.io.SessionOutputBuffer
|
|
new:
|
|
public org.apache.http.impl.conn.LoggingSessionOutputBuffer extends java.lang.Object implements org.apache.http.io.SessionOutputBuffer
|
|
Class changed: org.apache.http.impl.conn.SingleClientConnManager
|
|
Methods removed:
|
|
public void releaseConnection(org.apache.http.conn.ManagedClientConnection);
|
|
|
|
Methods added:
|
|
public void closeExpiredConnections();
|
|
public void releaseConnection(org.apache.http.conn.ManagedClientConnection, long, java.util.concurrent.TimeUnit);
|
|
|
|
Fields added:
|
|
protected long connectionExpiresTime;
|
|
|
|
Class changed: org.apache.http.impl.conn.tsccm.AbstractConnPool
|
|
Methods removed:
|
|
public abstract void freeEntry(org.apache.http.impl.conn.tsccm.BasicPoolEntry, boolean);
|
|
|
|
Methods added:
|
|
public void closeExpiredConnections();
|
|
public abstract void freeEntry(org.apache.http.impl.conn.tsccm.BasicPoolEntry, boolean, long, java.util.concurrent.TimeUnit);
|
|
|
|
Class changed: org.apache.http.impl.conn.tsccm.ConnPoolByRoute
|
|
Methods removed:
|
|
public void freeEntry(org.apache.http.impl.conn.tsccm.BasicPoolEntry, boolean);
|
|
|
|
Methods added:
|
|
public void freeEntry(org.apache.http.impl.conn.tsccm.BasicPoolEntry, boolean, long, java.util.concurrent.TimeUnit);
|
|
|
|
Class changed: org.apache.http.impl.conn.tsccm.RefQueueWorker
|
|
Fields removed:
|
|
protected final org.apache.commons.logging.Log LOG;
|
|
|
|
Class changed: org.apache.http.impl.conn.tsccm.RouteSpecificPool
|
|
Methods removed:
|
|
public org.apache.http.impl.conn.tsccm.WaitingThread dequeueThread();
|
|
|
|
Methods added:
|
|
public org.apache.http.impl.conn.tsccm.WaitingThread nextThread();
|
|
|
|
Class changed: org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
|
|
Methods removed:
|
|
public void releaseConnection(org.apache.http.conn.ManagedClientConnection);
|
|
|
|
Methods added:
|
|
public void closeExpiredConnections();
|
|
public void releaseConnection(org.apache.http.conn.ManagedClientConnection, long, java.util.concurrent.TimeUnit);
|
|
|
|
Class changed: org.apache.http.impl.cookie.BasicClientCookie
|
|
Methods added:
|
|
public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
|
|
|
|
Class descriptor changed:
|
|
old:
|
|
public org.apache.http.impl.cookie.BasicClientCookie extends java.lang.Object implements org.apache.http.cookie.SetCookie, org.apache.http.cookie.ClientCookie
|
|
new:
|
|
public org.apache.http.impl.cookie.BasicClientCookie extends java.lang.Object implements org.apache.http.cookie.SetCookie, org.apache.http.cookie.ClientCookie, java.lang.Cloneable
|
|
Class changed: org.apache.http.impl.cookie.BasicClientCookie2
|
|
Methods added:
|
|
public java.lang.Object clone() throws java.lang.CloneNotSupportedException;
|
|
|
|
Class changed: org.apache.http.impl.cookie.BrowserCompatSpec
|
|
Fields added:
|
|
protected final static java.lang.String[] DATE_PATTERNS;
|
|
|
|
Class changed: org.apache.http.impl.cookie.NetscapeDraftSpec
|
|
Methods added:
|
|
public NetscapeDraftSpec(java.lang.String[]);
|
|
|
|
Fields added:
|
|
protected final static java.lang.String EXPIRES_PATTERN = EEE, dd-MMM-yyyy HH:mm:ss z;
|
|
|
|
API diff generated by JarDiff http://www.osjava.org/jardiff/
|
|
|
|
HttpMime API changes (generated by JarDiff 0.2)
|
|
--------------------------------------
|
|
|
|
Class removed:
|
|
public abstract org.apache.http.entity.mime.ContentDescriptor extends java.lang.Object
|
|
Class changed: org.apache.http.entity.mime.FormBodyPart
|
|
Methods removed:
|
|
protected void generateContentType(org.apache.http.entity.mime.ContentDescriptor);
|
|
protected void generateTransferEncoding(org.apache.http.entity.mime.ContentDescriptor);
|
|
|
|
Methods added:
|
|
protected void generateContentType(org.apache.james.mime4j.descriptor.ContentDescriptor);
|
|
protected void generateTransferEncoding(org.apache.james.mime4j.descriptor.ContentDescriptor);
|
|
|
|
Class changed: org.apache.http.entity.mime.HttpMultipart
|
|
Methods removed:
|
|
public HttpMultipart();
|
|
|
|
Methods added:
|
|
public HttpMultipart(java.lang.String);
|
|
public void writeTo(java.io.OutputStream, int) throws java.io.IOException, org.apache.james.mime4j.MimeException;
|
|
|
|
Class changed: org.apache.http.entity.mime.content.ContentBody
|
|
Class descriptor changed:
|
|
old:
|
|
public abstract org.apache.http.entity.mime.content.ContentBody extends java.lang.Object implements org.apache.james.mime4j.message.Body, org.apache.http.entity.mime.ContentDescriptor
|
|
new:
|
|
public abstract org.apache.http.entity.mime.content.ContentBody extends java.lang.Object implements org.apache.james.mime4j.message.Body, org.apache.james.mime4j.descriptor.ContentDescriptor
|
|
Class changed: org.apache.http.entity.mime.content.FileBody
|
|
Methods removed:
|
|
public java.nio.charset.Charset getCharset();
|
|
public void writeTo(java.io.OutputStream) throws java.io.IOException;
|
|
|
|
Methods added:
|
|
public java.lang.String getCharset();
|
|
public java.util.Map getContentTypeParameters();
|
|
public java.lang.String getMediaType();
|
|
public java.lang.String getSubType();
|
|
public void writeTo(java.io.OutputStream, int) throws java.io.IOException;
|
|
|
|
Class changed: org.apache.http.entity.mime.content.InputStreamBody
|
|
Methods removed:
|
|
public java.nio.charset.Charset getCharset();
|
|
public void writeTo(java.io.OutputStream) throws java.io.IOException;
|
|
|
|
Methods added:
|
|
public java.lang.String getCharset();
|
|
public java.util.Map getContentTypeParameters();
|
|
public java.lang.String getMediaType();
|
|
public java.lang.String getSubType();
|
|
public void writeTo(java.io.OutputStream, int) throws java.io.IOException;
|
|
|
|
Class changed: org.apache.http.entity.mime.content.StringBody
|
|
Methods removed:
|
|
public java.nio.charset.Charset getCharset();
|
|
public void writeTo(java.io.OutputStream) throws java.io.IOException;
|
|
|
|
Methods added:
|
|
public java.lang.String getCharset();
|
|
public java.util.Map getContentTypeParameters();
|
|
public java.lang.String getMediaType();
|
|
public java.lang.String getSubType();
|
|
public void writeTo(java.io.OutputStream, int) throws java.io.IOException;
|
|
|
|
API diff generated by JarDiff http://www.osjava.org/jardiff/
|
|
|
|
--------------------------------------
|
|
|
|
Release 4.0 Alpha 4
|
|
-------------------
|
|
|
|
ALPHA4 marks the completion of the overhaul of the connection management
|
|
code in HttpClient. All known shortcomings of the old HttpClient 3.x
|
|
connection management API have been addressed.
|
|
|
|
NTLM authentication remains the only missing major feature in the new
|
|
codeline that prevents us from moving awards the API freeze.
|
|
|
|
There has been a number of important bug fixes since ALPHA3. All upstream
|
|
projects are encouraged to upgrade to the latest release.
|
|
|
|
-------------------
|
|
|
|
HttpClient 3.x features that have NOT yet been ported:
|
|
-------------------
|
|
|
|
* NTLM authentication scheme
|
|
|
|
-------------------
|
|
|
|
Changelog:
|
|
-------------------
|
|
|
|
* [HTTPCLIENT-765] String.toLowerCase() / toUpperCase() should specify
|
|
Locale.ENGLISH
|
|
Contributed by Sebastian Bazley <sebb at apache.org>
|
|
|
|
* [HTTPCLIENT-769] Do not pool connection marked non-reusable.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-763] Fixed problem with AbstractClientConnAdapter#abortConnection()
|
|
not releasing the connection if called from the main execution thread while
|
|
there is no blocking I/O operation.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-652] Added optional state attribute to managed client connections.
|
|
This enables connection managers to correctly handle stateful connections.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-673] Revised max connections per route configuration
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-753] Class Scheme and related classes moved to a separate package
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-757] Improved request wrapping in the DefaultClientRequestDirector.
|
|
This also fixed the problem with the default proxy set at the client level
|
|
having no effect.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-734] Request abort will unblock the thread waiting for a connection
|
|
Contributed by Sam Berlin <sberlin at gmail.com>
|
|
|
|
* [HTTPCLIENT-759] Ensure release of connections back to the connection manager
|
|
on exceptions.
|
|
Contributed by Sam Berlin <sberlin at gmail.com>
|
|
|
|
* [HTTPCLIENT-758] Fixed the use of generics in AbstractHttpClient
|
|
#removeRequestInterceptorByClass and #removeResponseInterceptorByClass
|
|
Contributed by Johannes Koch <johannes.koch at fit.fraunhofer.de>
|
|
|
|
* [HTTPCLIENT-749] HttpParams beans
|
|
Contributed by Stojce Dimski <sdmiski at yahoo.it>
|
|
|
|
* [HTTPCLIENT-755] Workaround for known bugs in java.net.URI.resolve()
|
|
Bug ID: 4708535
|
|
Contributed by Johannes Koch <johannes.koch at fit.fraunhofer.de>
|
|
|
|
--------------------------------------
|
|
|
|
Release 4.0 Alpha 3
|
|
-------------------
|
|
|
|
ALPHA3 release brings another round of API refinements and improvements in
|
|
functionality. As of this release HttpClient requires Java 5 compatible
|
|
runtime environment and takes full advantage of generics and new concurrency
|
|
primitives.
|
|
|
|
This release also introduces new default cookie policy that selects a cookie
|
|
specification depending on the format of cookies sent by the target host.
|
|
It is no longer necessary to know beforehand what kind of HTTP cookie support
|
|
the target host provides. HttpClient is now able to pick up either a lenient
|
|
or a strict cookie policy depending on the compliance level of the target host.
|
|
|
|
Another notable improvement is a completely reworked support for multipart
|
|
entities based on Apache mime4j library.
|
|
|
|
-------------------
|
|
|
|
HttpClient 3.x features that have NOT yet been ported:
|
|
-------------------
|
|
|
|
* NTLM authentication scheme
|
|
|
|
-------------------
|
|
|
|
Changelog:
|
|
-------------------
|
|
|
|
* [HTTPCLIENT-742] common interface for HttpRoute and RouteTracker
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-741] Fixed concurrency issues in AbstractClientConnAdapter.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-726] testcase for spurious wakeups in ThreadSafeClientConnManager
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-643] Automatic connect fail-over for multi-home remote servers.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-735] unsetting of DEFAULT_PROXY and FORCED_ROUTE in hierarchies
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-723] route planner based on java.net.ProxySelector
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-740] don't start connection GC thread in pool constructor
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-736] route planners use SchemeRegistry instead of ConnManager
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-730] Fixed rewriting of URIs containing escaped characters
|
|
Contributed by Sam Berlin <sberlin at gmail.com> and
|
|
Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-667] Added 'Meta' cookie policy that selects a cookie
|
|
specification depending on the format of the cookie(s).
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-729] Move HttpRoute and related classes to routing package.
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-725] Use TimeUnit arguments for timeouts in connection manager.
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-677] Connection manager no longer uses Thread.interrupt().
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-716] Allow application-defined routes.
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-712] Improve HttpRoute API
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-711] Bad route computed for redirected requests
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-715] Remove RoutedRequest from API
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-705] Fixed incorrect handling of URIs with null path component.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-688] HttpOptions#getAllowedMethods can now handle multiple
|
|
Allow headers.
|
|
Contributed by Andrea Selva <selva.andre at gmail.com>
|
|
|
|
--------------------------------------
|
|
|
|
Release 4.0 Alpha 2
|
|
-------------------
|
|
|
|
ALPHA2 release is another milestone in the redesign of HttpClient. It includes
|
|
a number of improvements since ALPHA1, among which are improved connection
|
|
pooling, support for proxy chains, redesigned HTTP state and authentication
|
|
credentials management API, improved RFC 2965 cookie specification.
|
|
|
|
-------------------
|
|
|
|
HttpClient 3.x features that have NOT yet been ported
|
|
-------------------
|
|
* NTLM authentication scheme
|
|
|
|
* Support for multipart MIME coded entities
|
|
|
|
-------------------
|
|
|
|
Changelog
|
|
-------------------
|
|
|
|
* [HTTPCLIENT-698] Resolve non-absolute redirect URIs relative to
|
|
the request URI
|
|
Contributed by Johannes Koch <johannes.koch at fit.fraunhofer.de>
|
|
|
|
* [HTTPCLIENT-697] Throw a more intelligible exception when connection
|
|
to a remote host cannot be established.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-689] Caching of SimpleDateFormat in DateUtils
|
|
Contributed by Daniel Müller <strider at digitalstrider.com>
|
|
|
|
* [HTTPCLIENT-689] stackable parameters in AbstractHttpClient
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-477] Use distinct instances of the authentication handler
|
|
interface for authentication with target and proxy hosts
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-690] ManagedClientConnection provides access to SSLSession
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-692] ClientConnectionManager throws InterruptedException
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCORE-116] moved parameter names to interfaces
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-649] support for proxy chains in HttpConn
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-636] refactor ThreadSafeClientConnManager in separate package
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-669] new HttpRoutePlanner interface and implementation
|
|
Contributed by Andrea Selva <selva.andre at gmail.com>
|
|
|
|
* [HTTPCLIENT-653] detached connection wrapper no longer prevents
|
|
garbage collection of ThreadSafeClientConnManager
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-674] use org.apache.http.util.VersionInfo instead of a local one
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-666] Replaced HttpState with CredentialsProvier and CookieStore interfaces
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCORE-100] revised HttpContext hierarchy
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-618] eliminate class HostConfiguration
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-672] re-sync with API changes in core alpha6-SNAPSHOT
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
--------------------------------------
|
|
|
|
Release 4.0 Alpha 1
|
|
-------------------
|
|
|
|
HttpClient 4.0 represents a complete, ground-up redesign and almost a complete
|
|
rewrite of the HttpClient 3.x codeline. This release finally addresses several
|
|
design flaws that existed since the 1.0 release and could not be fixed without
|
|
a major code overhaul and breaking API compatibility.
|
|
|
|
The HttpClient 4.0 API is still very experimental and is bound to change
|
|
during the course of the ALPHA development phase. Several important features
|
|
have not yet been ported to the new API.
|
|
|
|
Architectural changes
|
|
---------------------
|
|
|
|
* Redesign of the HttpClient internals addressing all known
|
|
major architectural shortcomings of the 3.x codeline
|
|
|
|
* Cleaner, more flexible and expressive API
|
|
|
|
* Better performance and smaller memory footprint due to a more
|
|
efficient HTTP transport based on HttpCore. HttpClient 4.0 is
|
|
expected to be 10% to 25% faster than HttpClient 3.x codeline
|
|
|
|
* More modular structure
|
|
|
|
* Pluggable redirect and authentication handlers
|
|
|
|
* Support for protocol incerceptors
|
|
|
|
* Improved connection management
|
|
|
|
* Improved support for sending requests via a proxy or a chain of
|
|
proxies
|
|
|
|
* Improved handling redirects of entity enclosing requests
|
|
|
|
* More flexible SSL context customization
|
|
|
|
* Reduced intermediate garbage in the process of
|
|
generating HTTP requests and parsing HTTP responses
|
|
|
|
-------------------
|
|
|
|
HttpClient 3.x features that have NOT yet been ported
|
|
-------------------
|
|
* NTLM authentication scheme
|
|
|
|
* RFC2965 cookie policy (Cookie2)
|
|
|
|
* Support for multipart MIME coded entities
|
|
|
|
-------------------
|
|
|
|
Changelog
|
|
-------------------
|
|
|
|
The following is a list of contributions tracked in JIRA.
|
|
Note that this is not a complete list of contributions or changes.
|
|
Since the API was redesigned completely, tracking everything outside
|
|
of the source code repository would have been too burdensome.
|
|
|
|
* [HTTPCLIENT-655] User-Agent string no longer violates RFC
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-541] Virtual host API redesign
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-614] Allow for different strategies when checking
|
|
CN of x509 certificates
|
|
Contributed by Julius Davies <juliusdavies at gmail.com>
|
|
|
|
* [HTTPCLIENT-136] Fixed inadequate proxy support
|
|
Long standing architectural problem. Issue opened on 19/Dec/2002.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-63] Support for pluggable redirect and authentication handlers
|
|
Long standing architectural problem. Issue opened on 15/Jul/2002.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-245] Fixed redirect handling. HttpClient can now automatically
|
|
handle redirects of entity enclosing requests.
|
|
Long standing architectural problem. Issue opened on 14/Jul/2003.
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-613] HTTPS connections now verify CN of x509 certificates
|
|
Contributed by Julius Davies <juliusdavies at gmail.com>
|
|
|
|
* [HTTPCLIENT-497] Wire/header logger names consistent with class loggers
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-484] AuthSSLProtocolSocketFactory in the main distribution
|
|
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
|
|
|
* [HTTPCLIENT-589] Do not consume the remaining response content if
|
|
the connection is to be closed
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|
|
* [HTTPCLIENT-475] Support for unconnected sockets. HTTP requests can now be
|
|
aborted while network socket is still being connected.
|
|
Contributed by Roland Weber <rolandw at apache.org>
|
|
|