httpcomponents-client/RELEASE_NOTES.txt

805 lines
39 KiB
Plaintext

Changes since 4.0 Alpha 2
-------------------
* [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 specification that selects a cookie policy
depending on the format of the cookie(s). 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 server.
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>
--------------------------------------
HttpClient API changes (generated by JarDiff 0.2)
--------------------------------------
Class removed:
public org.apache.http.client.HttpState extends java.lang.Object
Class removed:
public org.apache.http.client.VersionInfo extends java.lang.Object
Class removed:
public org.apache.http.client.protocol.HttpClientContext extends org.apache.http.protocol.HttpExecutionContext
Class removed:
public org.apache.http.conn.HostConfiguration extends java.lang.Object
Class removed:
public org.apache.http.conn.RouteDirector extends java.lang.Object
Class removed:
public abstract org.apache.http.conn.SecureSocketFactory extends java.lang.Object implements org.apache.http.conn.SocketFactory
Class removed:
public final org.apache.http.cookie.params.CookieSpecParams extends java.lang.Object
Class removed:
public org.apache.http.impl.client.DefaultAuthenticationHandler extends java.lang.Object implements org.apache.http.client.AuthenticationHandler
Class removed:
public org.apache.http.impl.conn.ThreadSafeClientConnManager extends java.lang.Object implements org.apache.http.conn.ClientConnectionManager
Class added:
public abstract org.apache.http.auth.params.AuthPNames extends java.lang.Object
Class added:
public abstract org.apache.http.client.CookieStore extends java.lang.Object
Class added:
public abstract org.apache.http.client.CredentialsProvider extends java.lang.Object
Class added:
public abstract org.apache.http.client.params.AllClientPNames extends java.lang.Object implements org.apache.http.params.CoreConnectionPNames, org.apache.http.params.CoreProtocolPNames, org.apache.http.client.params.ClientPNames, org.apache.http.auth.params.AuthPNames, org.apache.http.cookie.params.CookieSpecPNames, org.apache.http.conn.params.ConnConnectionPNames, org.apache.http.conn.params.ConnManagerPNames, org.apache.http.conn.params.ConnRoutePNames
Class added:
public abstract org.apache.http.client.params.ClientPNames extends java.lang.Object
Class added:
public abstract org.apache.http.client.protocol.ClientContext extends java.lang.Object
Class added:
public org.apache.http.client.protocol.RequestDefaultHeaders extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
Class added:
public org.apache.http.conn.BasicRouteDirector extends java.lang.Object implements org.apache.http.conn.HttpRouteDirector
Class added:
public org.apache.http.conn.HttpHostConnectException extends java.net.ConnectException
Class added:
public abstract org.apache.http.conn.HttpRouteDirector extends java.lang.Object
Class added:
public abstract org.apache.http.conn.HttpRoutePlanner extends java.lang.Object
Class added:
public abstract org.apache.http.conn.LayeredSocketFactory extends java.lang.Object implements org.apache.http.conn.SocketFactory
Class added:
public abstract org.apache.http.conn.params.ConnConnectionPNames extends java.lang.Object
Class added:
public abstract org.apache.http.conn.params.ConnManagerPNames extends java.lang.Object
Class added:
public abstract org.apache.http.conn.params.ConnRoutePNames extends java.lang.Object
Class added:
public org.apache.http.conn.params.HttpConnParams extends java.lang.Object
Class added:
public org.apache.http.conn.util.InetAddressUtils extends java.lang.Object
Class added:
public abstract org.apache.http.cookie.ClientCookie extends java.lang.Object implements org.apache.http.cookie.Cookie
Class added:
public abstract org.apache.http.cookie.SetCookie extends java.lang.Object implements org.apache.http.cookie.Cookie
Class added:
public abstract org.apache.http.cookie.SetCookie2 extends java.lang.Object implements org.apache.http.cookie.SetCookie
Class added:
public abstract org.apache.http.cookie.params.CookieSpecPNames extends java.lang.Object
Class added:
public abstract org.apache.http.impl.client.AbstractAuthenticationHandler extends java.lang.Object implements org.apache.http.client.AuthenticationHandler
Class added:
public org.apache.http.impl.client.BasicCookieStore extends java.lang.Object implements org.apache.http.client.CookieStore
Class added:
public org.apache.http.impl.client.BasicCredentialsProvider extends java.lang.Object implements org.apache.http.client.CredentialsProvider
Class added:
public org.apache.http.impl.client.ClientParamsStack extends org.apache.http.params.AbstractHttpParams
Class added:
public org.apache.http.impl.client.DefaultProxyAuthenticationHandler extends org.apache.http.impl.client.AbstractAuthenticationHandler
Class added:
public org.apache.http.impl.client.DefaultTargetAuthenticationHandler extends org.apache.http.impl.client.AbstractAuthenticationHandler
Class added:
public org.apache.http.impl.conn.DefaultHttpRoutePlanner extends java.lang.Object implements org.apache.http.conn.HttpRoutePlanner
Class added:
public org.apache.http.impl.conn.DefaultResponseParser extends org.apache.http.impl.io.AbstractMessageParser
Class added:
public abstract org.apache.http.impl.conn.tsccm.AbstractConnPool extends java.lang.Object implements org.apache.http.impl.conn.tsccm.RefQueueHandler
Class added:
public org.apache.http.impl.conn.tsccm.BasicPoolEntry extends org.apache.http.impl.conn.AbstractPoolEntry
Class added:
public org.apache.http.impl.conn.tsccm.BasicPoolEntryRef extends java.lang.ref.WeakReference
Class added:
public org.apache.http.impl.conn.tsccm.BasicPooledConnAdapter extends org.apache.http.impl.conn.AbstractPooledConnAdapter
Class added:
public org.apache.http.impl.conn.tsccm.ConnPoolByRoute extends org.apache.http.impl.conn.tsccm.AbstractConnPool
Class added:
public org.apache.http.impl.conn.tsccm.ConnPoolByRoute.WaitingThread extends java.lang.Object
Class added:
public abstract org.apache.http.impl.conn.tsccm.RefQueueHandler extends java.lang.Object
Class added:
public org.apache.http.impl.conn.tsccm.RefQueueWorker extends java.lang.Object implements java.lang.Runnable
Class added:
public org.apache.http.impl.conn.tsccm.RouteSpecificPool extends java.lang.Object
Class added:
public org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager extends java.lang.Object implements org.apache.http.conn.ClientConnectionManager
Class added:
public org.apache.http.impl.cookie.BasicClientCookie extends java.lang.Object implements org.apache.http.cookie.SetCookie, org.apache.http.cookie.ClientCookie
Class added:
public org.apache.http.impl.cookie.BasicClientCookie2 extends org.apache.http.impl.cookie.BasicClientCookie implements org.apache.http.cookie.SetCookie2
Class added:
public org.apache.http.impl.cookie.RFC2965CommentUrlAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
Class added:
public org.apache.http.impl.cookie.RFC2965DiscardAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
Class added:
public org.apache.http.impl.cookie.RFC2965DomainAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
Class added:
public org.apache.http.impl.cookie.RFC2965PortAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
Class added:
public org.apache.http.impl.cookie.RFC2965Spec extends org.apache.http.impl.cookie.RFC2109Spec
Class added:
public org.apache.http.impl.cookie.RFC2965SpecFactory extends java.lang.Object implements org.apache.http.cookie.CookieSpecFactory
Class added:
public org.apache.http.impl.cookie.RFC2965VersionAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
Class changed: org.apache.http.auth.params.AuthParams
Fields removed:
public final static java.lang.String CREDENTIAL_CHARSET = http.protocol.credential-charset;
Class changed: org.apache.http.client.AuthenticationHandler
Methods removed:
public abstract java.util.Map getProxyChallenges(org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext) throws org.apache.http.auth.MalformedChallengeException;
public abstract java.util.Map getTargetChallenges(org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext) throws org.apache.http.auth.MalformedChallengeException;
public abstract boolean isProxyAuthenticationRequested(org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext);
public abstract boolean isTargetAuthenticationRequested(org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext);
Methods added:
public abstract java.util.Map getChallenges(org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext) throws org.apache.http.auth.MalformedChallengeException;
public abstract boolean isAuthenticationRequested(org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext);
Class changed: org.apache.http.client.ClientRequestDirector
Method changed:
old:
public abstract org.apache.http.HttpResponse execute(org.apache.http.client.RoutedRequest, 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.RoutedRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException;
Class changed: org.apache.http.client.HttpClient
Method changed:
old:
public abstract org.apache.http.HttpResponse execute(org.apache.http.client.RoutedRequest) throws org.apache.http.HttpException, java.io.IOException;
new:
public abstract org.apache.http.HttpResponse execute(org.apache.http.client.RoutedRequest) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException;
Method changed:
old:
public abstract org.apache.http.HttpResponse execute(org.apache.http.client.RoutedRequest, 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.RoutedRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException;
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 org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException;
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 org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException;
Class changed: org.apache.http.client.methods.HttpOptions
Method changed:
old:
public java.util.Set getAllowedMethods(org.apache.http.HttpResponse);
new:
public java.util.Set getAllowedMethods(org.apache.http.HttpResponse) throws org.apache.http.ParseException;
Class changed: org.apache.http.client.methods.HttpUriRequest
Methods removed:
public abstract org.apache.http.HttpVersion getHttpVersion();
Class changed: org.apache.http.client.params.HttpClientParams
Fields removed:
public final static java.lang.String ALLOW_CIRCULAR_REDIRECTS = http.protocol.allow-circular-redirects;
public final static java.lang.String AUTH_SCHEME_PRIORITY = http.protocol-auth-scheme-priority;
public final static java.lang.String CONNECTION_MANAGER_FACTORY = http.connection-manager.factory;
public final static java.lang.String CONNECTION_MANAGER_TIMEOUT = http.connection-manager.timeout;
public final static java.lang.String COOKIE_POLICY = http.protocol.cookie-policy;
public final static java.lang.String DEFAULT_HEADERS = http.default-headers;
public final static java.lang.String DEFAULT_HOST = http.default-host;
public final static java.lang.String DEFAULT_PROXY = http.default-proxy;
public final static java.lang.String HANDLE_AUTHENTICATION = http.protocol.handle-authentication;
public final static java.lang.String HANDLE_REDIRECTS = http.protocol.handle-redirects;
public final static java.lang.String MAX_REDIRECTS = http.protocol.max-redirects;
public final static java.lang.String PREEMPTIVE_AUTHENTICATION = http.protocol.authentication-preemptive;
public final static java.lang.String REJECT_RELATIVE_REDIRECT = http.protocol.reject-relative-redirect;
public final static java.lang.String VIRTUAL_HOST = http.virtual-host;
Class changed: org.apache.http.conn.ClientConnectionManager
Methods added:
public abstract org.apache.http.params.HttpParams getParams();
Method changed:
old:
public abstract org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.HttpRoute);
new:
public abstract org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.HttpRoute) throws java.lang.InterruptedException;
Method changed:
old:
public abstract org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.HttpRoute, long) throws org.apache.http.conn.ConnectionPoolTimeoutException;
new:
public abstract org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.HttpRoute, long) throws org.apache.http.conn.ConnectionPoolTimeoutException, java.lang.InterruptedException;
Class changed: org.apache.http.conn.HttpRoute
Methods removed:
deprecated: public final org.apache.http.conn.HostConfiguration toHostConfig();
Class changed: org.apache.http.conn.ManagedClientConnection
Methods removed:
public abstract void tunnelCreated(boolean, org.apache.http.params.HttpParams) throws java.io.IOException;
Methods added:
public abstract javax.net.ssl.SSLSession getSSLSession();
public abstract void tunnelProxy(org.apache.http.HttpHost, boolean, org.apache.http.params.HttpParams) throws java.io.IOException;
public abstract void tunnelTarget(boolean, org.apache.http.params.HttpParams) throws java.io.IOException;
Class changed: org.apache.http.conn.RouteTracker
Methods removed:
deprecated: public final org.apache.http.conn.HostConfiguration toHostConfig();
Class changed: org.apache.http.conn.params.HttpConnectionManagerParams
Methods removed:
public static int getMaxConnectionsPerHost(org.apache.http.params.HttpParams, org.apache.http.conn.HostConfiguration);
public static void setMaxConnectionsPerHost(org.apache.http.params.HttpParams, org.apache.http.conn.HostConfiguration, int);
Methods added:
public static int getMaxConnectionsPerHost(org.apache.http.params.HttpParams, org.apache.http.conn.HttpRoute);
public static void setMaxConnectionsPerHost(org.apache.http.params.HttpParams, org.apache.http.conn.HttpRoute, int);
Fields removed:
public final static java.lang.String MAX_HOST_CONNECTIONS = http.connection-manager.max-per-host;
public final static java.lang.String MAX_TOTAL_CONNECTIONS = http.connection-manager.max-total;
Class changed: org.apache.http.conn.ssl.SSLSocketFactory
Class descriptor changed:
old:
public org.apache.http.conn.ssl.SSLSocketFactory extends java.lang.Object implements org.apache.http.conn.SecureSocketFactory
new:
public org.apache.http.conn.ssl.SSLSocketFactory extends java.lang.Object implements org.apache.http.conn.LayeredSocketFactory
Class changed: org.apache.http.cookie.Cookie
Methods removed:
public Cookie(java.lang.String, java.lang.String);
public boolean isDomainAttributeSpecified();
public boolean isPathAttributeSpecified();
public void setComment(java.lang.String);
public void setDomain(java.lang.String);
public void setDomainAttributeSpecified(boolean);
public void setExpiryDate(java.util.Date);
public void setPath(java.lang.String);
public void setPathAttributeSpecified(boolean);
public void setSecure(boolean);
public void setVersion(int);
public java.lang.String toString();
Methods added:
public abstract java.lang.String getCommentURL();
public abstract int[] getPorts();
Class descriptor changed:
old:
public org.apache.http.cookie.Cookie extends java.lang.Object
new:
public abstract org.apache.http.cookie.Cookie extends java.lang.Object
Method changed:
old:
public java.lang.String getComment();
new:
public abstract java.lang.String getComment();
Method changed:
old:
public java.lang.String getDomain();
new:
public abstract java.lang.String getDomain();
Method changed:
old:
public java.util.Date getExpiryDate();
new:
public abstract java.util.Date getExpiryDate();
Method changed:
old:
public java.lang.String getName();
new:
public abstract java.lang.String getName();
Method changed:
old:
public java.lang.String getPath();
new:
public abstract java.lang.String getPath();
Method changed:
old:
public java.lang.String getValue();
new:
public abstract java.lang.String getValue();
Method changed:
old:
public int getVersion();
new:
public abstract int getVersion();
Method changed:
old:
public boolean isExpired(java.util.Date);
new:
public abstract boolean isExpired(java.util.Date);
Method changed:
old:
public boolean isPersistent();
new:
public abstract boolean isPersistent();
Method changed:
old:
public boolean isSecure();
new:
public abstract boolean isSecure();
Class changed: org.apache.http.cookie.CookieAttributeHandler
Methods removed:
public abstract void parse(org.apache.http.cookie.Cookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Methods added:
public abstract void parse(org.apache.http.cookie.SetCookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Class changed: org.apache.http.cookie.CookieSpec
Methods added:
public abstract int getVersion();
public abstract org.apache.http.Header getVersionHeader();
Class changed: org.apache.http.cookie.SM
Fields added:
public final static java.lang.String COOKIE2 = Cookie2;
public final static java.lang.String SET_COOKIE2 = Set-Cookie2;
Class changed: org.apache.http.impl.client.AbstractHttpClient
Methods removed:
protected abstract org.apache.http.client.AuthenticationHandler createAuthenticationHandler();
protected abstract org.apache.http.client.HttpState createHttpState();
public final synchronized org.apache.http.client.AuthenticationHandler getAuthenticationHandler();
public final synchronized org.apache.http.client.HttpState getState();
public synchronized void setAuthenticationHandler(org.apache.http.client.AuthenticationHandler);
public synchronized void setState(org.apache.http.client.HttpState);
Methods added:
public synchronized void addRequestInterceptor(org.apache.http.HttpRequestInterceptor, int);
public synchronized void addResponseInterceptor(org.apache.http.HttpResponseInterceptor, int);
protected abstract org.apache.http.client.CookieStore createCookieStore();
protected abstract org.apache.http.client.CredentialsProvider createCredentialsProvider();
protected abstract org.apache.http.conn.HttpRoutePlanner createHttpRoutePlanner();
protected abstract org.apache.http.client.AuthenticationHandler createProxyAuthenticationHandler();
protected abstract org.apache.http.client.AuthenticationHandler createTargetAuthenticationHandler();
protected org.apache.http.params.HttpParams determineParams(org.apache.http.HttpRequest);
public final synchronized org.apache.http.client.CookieStore getCookieStore();
public final synchronized org.apache.http.client.CredentialsProvider getCredentialsProvider();
public final synchronized org.apache.http.client.AuthenticationHandler getProxyAuthenticationHandler();
public final synchronized org.apache.http.conn.HttpRoutePlanner getRoutePlanner();
public final synchronized org.apache.http.client.AuthenticationHandler getTargetAuthenticationHandler();
public void removeRequestInterceptorByClass(java.lang.Class);
public void removeResponseInterceptorByClass(java.lang.Class);
public synchronized void setCookieStore(org.apache.http.client.CookieStore);
public synchronized void setCredentialsProvider(org.apache.http.client.CredentialsProvider);
public synchronized void setProxyAuthenticationHandler(org.apache.http.client.AuthenticationHandler);
public synchronized void setRoutePlanner(org.apache.http.conn.HttpRoutePlanner);
public synchronized void setTargetAuthenticationHandler(org.apache.http.client.AuthenticationHandler);
Method changed:
old:
public org.apache.http.HttpResponse execute(org.apache.http.client.RoutedRequest) throws org.apache.http.HttpException, java.io.IOException;
new:
public org.apache.http.HttpResponse execute(org.apache.http.client.RoutedRequest) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException;
Method changed:
old:
public final org.apache.http.HttpResponse execute(org.apache.http.client.RoutedRequest, 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.RoutedRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException;
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 org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException;
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 org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException;
Class changed: org.apache.http.impl.client.DefaultClientRequestDirector
Methods removed:
public DefaultClientRequestDirector(org.apache.http.conn.ClientConnectionManager, org.apache.http.ConnectionReuseStrategy, org.apache.http.protocol.HttpProcessor, org.apache.http.client.HttpRequestRetryHandler, org.apache.http.client.RedirectHandler, org.apache.http.client.AuthenticationHandler, org.apache.http.params.HttpParams);
protected boolean createTunnel(org.apache.http.conn.HttpRoute, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException;
Methods added:
public DefaultClientRequestDirector(org.apache.http.conn.ClientConnectionManager, org.apache.http.ConnectionReuseStrategy, 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);
protected boolean createTunnelToProxy(org.apache.http.conn.HttpRoute, int, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException;
protected boolean createTunnelToTarget(org.apache.http.conn.HttpRoute, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException;
Method changed:
old:
protected org.apache.http.conn.ManagedClientConnection allocateConnection(org.apache.http.conn.HttpRoute, long) throws org.apache.http.HttpException, org.apache.http.conn.ConnectionPoolTimeoutException;
new:
protected org.apache.http.conn.ManagedClientConnection allocateConnection(org.apache.http.conn.HttpRoute, long) throws org.apache.http.HttpException, org.apache.http.conn.ConnectionPoolTimeoutException, java.lang.InterruptedException;
Method changed:
old:
public org.apache.http.HttpResponse execute(org.apache.http.client.RoutedRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException;
new:
public org.apache.http.HttpResponse execute(org.apache.http.client.RoutedRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException;
Class changed: org.apache.http.impl.client.DefaultHttpClient
Methods removed:
protected org.apache.http.client.AuthenticationHandler createAuthenticationHandler();
protected org.apache.http.client.HttpState createHttpState();
Methods added:
protected org.apache.http.client.CookieStore createCookieStore();
protected org.apache.http.client.CredentialsProvider createCredentialsProvider();
protected org.apache.http.conn.HttpRoutePlanner createHttpRoutePlanner();
protected org.apache.http.client.AuthenticationHandler createProxyAuthenticationHandler();
protected org.apache.http.client.AuthenticationHandler createTargetAuthenticationHandler();
Class changed: org.apache.http.impl.conn.AbstractClientConnAdapter
Methods added:
public javax.net.ssl.SSLSession getSSLSession();
Class changed: org.apache.http.impl.conn.AbstractPoolEntry
Methods removed:
protected AbstractPoolEntry(org.apache.http.conn.OperatedClientConnection);
public void tunnelCreated(boolean, org.apache.http.params.HttpParams) throws java.io.IOException;
Methods added:
protected AbstractPoolEntry(org.apache.http.conn.OperatedClientConnection, org.apache.http.conn.HttpRoute);
public void tunnelProxy(org.apache.http.HttpHost, boolean, org.apache.http.params.HttpParams) throws java.io.IOException;
public void tunnelTarget(boolean, org.apache.http.params.HttpParams) throws java.io.IOException;
Fields added:
protected org.apache.http.conn.HttpRoute plannedRoute;
Class changed: org.apache.http.impl.conn.AbstractPooledConnAdapter
Methods removed:
public void tunnelCreated(boolean, org.apache.http.params.HttpParams) throws java.io.IOException;
Methods added:
public void tunnelProxy(org.apache.http.HttpHost, boolean, org.apache.http.params.HttpParams) throws java.io.IOException;
public void tunnelTarget(boolean, org.apache.http.params.HttpParams) throws java.io.IOException;
Class changed: org.apache.http.impl.conn.DefaultClientConnection
Methods removed:
protected org.apache.http.io.HttpDataReceiver createHttpDataReceiver(java.net.Socket, int, org.apache.http.params.HttpParams) throws java.io.IOException;
protected org.apache.http.io.HttpDataTransmitter createHttpDataTransmitter(java.net.Socket, int, org.apache.http.params.HttpParams) throws java.io.IOException;
Methods added:
protected org.apache.http.io.HttpMessageParser createResponseParser(org.apache.http.io.SessionInputBuffer, org.apache.http.HttpResponseFactory, org.apache.http.params.HttpParams);
protected org.apache.http.io.SessionInputBuffer createSessionInputBuffer(java.net.Socket, int, org.apache.http.params.HttpParams) throws java.io.IOException;
protected org.apache.http.io.SessionOutputBuffer createSessionOutputBuffer(java.net.Socket, int, org.apache.http.params.HttpParams) throws java.io.IOException;
Class changed: org.apache.http.impl.conn.SingleClientConnManager
Methods added:
public org.apache.http.params.HttpParams getParams();
Class changed: org.apache.http.impl.conn.SingleClientConnManager.PoolEntry
Fields removed:
protected org.apache.http.conn.HttpRoute plannedRoute;
Class changed: org.apache.http.impl.cookie.BasicCommentHandler
Methods removed:
public void parse(org.apache.http.cookie.Cookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Methods added:
public void parse(org.apache.http.cookie.SetCookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Class changed: org.apache.http.impl.cookie.BasicDomainHandler
Methods removed:
public void parse(org.apache.http.cookie.Cookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Methods added:
public void parse(org.apache.http.cookie.SetCookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Class changed: org.apache.http.impl.cookie.BasicExpiresHandler
Methods removed:
public void parse(org.apache.http.cookie.Cookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Methods added:
public void parse(org.apache.http.cookie.SetCookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Class changed: org.apache.http.impl.cookie.BasicMaxAgeHandler
Methods removed:
public void parse(org.apache.http.cookie.Cookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Methods added:
public void parse(org.apache.http.cookie.SetCookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Class changed: org.apache.http.impl.cookie.BasicPathHandler
Methods removed:
public void parse(org.apache.http.cookie.Cookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Methods added:
public void parse(org.apache.http.cookie.SetCookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Class changed: org.apache.http.impl.cookie.BasicSecureHandler
Methods removed:
public void parse(org.apache.http.cookie.Cookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Methods added:
public void parse(org.apache.http.cookie.SetCookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Class changed: org.apache.http.impl.cookie.BrowserCompatSpec
Methods added:
public int getVersion();
public org.apache.http.Header getVersionHeader();
Class changed: org.apache.http.impl.cookie.NetscapeDraftSpec
Methods added:
public int getVersion();
public org.apache.http.Header getVersionHeader();
Class changed: org.apache.http.impl.cookie.RFC2109DomainHandler
Methods removed:
public void parse(org.apache.http.cookie.Cookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Methods added:
public void parse(org.apache.http.cookie.SetCookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Class changed: org.apache.http.impl.cookie.RFC2109Spec
Methods added:
protected void formatCookieAsVer(org.apache.http.util.CharArrayBuffer, org.apache.http.cookie.Cookie, int);
protected void formatParamAsVer(org.apache.http.util.CharArrayBuffer, java.lang.String, java.lang.String, int);
public int getVersion();
public org.apache.http.Header getVersionHeader();
Class changed: org.apache.http.impl.cookie.RFC2109VersionHandler
Methods removed:
public void parse(org.apache.http.cookie.Cookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
Methods added:
public void parse(org.apache.http.cookie.SetCookie, java.lang.String) throws org.apache.http.cookie.MalformedCookieException;
API diff generated by JarDiff http://www.osjava.org/jardiff/
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>