@NotThreadSafe public class DefaultRequestDirector extends Object implements RequestDirector
RequestDirector.
The following parameters can be used to customize the behavior of this class:
CoreProtocolPNames.PROTOCOL_VERSIONCoreProtocolPNames.STRICT_TRANSFER_ENCODINGCoreProtocolPNames.HTTP_ELEMENT_CHARSETCoreProtocolPNames.USE_EXPECT_CONTINUECoreProtocolPNames.WAIT_FOR_CONTINUECoreProtocolPNames.USER_AGENTCoreConnectionPNames.SOCKET_BUFFER_SIZECoreConnectionPNames.MAX_LINE_LENGTHCoreConnectionPNames.MAX_HEADER_COUNTCoreConnectionPNames.SO_TIMEOUTCoreConnectionPNames.SO_LINGERCoreConnectionPNames.SO_REUSEADDRCoreConnectionPNames.TCP_NODELAYCoreConnectionPNames.CONNECTION_TIMEOUTCoreConnectionPNames.STALE_CONNECTION_CHECKConnRoutePNames.FORCED_ROUTEConnRoutePNames.LOCAL_ADDRESSConnRoutePNames.DEFAULT_PROXYCookieSpecPNames.DATE_PATTERNSCookieSpecPNames.SINGLE_COOKIE_HEADERAuthPNames.CREDENTIAL_CHARSETClientPNames.COOKIE_POLICYClientPNames.HANDLE_AUTHENTICATIONClientPNames.HANDLE_REDIRECTSClientPNames.MAX_REDIRECTSClientPNames.ALLOW_CIRCULAR_REDIRECTSClientPNames.VIRTUAL_HOSTClientPNames.DEFAULT_HOSTClientPNames.DEFAULT_HEADERSClientPNames.CONN_MANAGER_TIMEOUT| Modifier and Type | Field and Description |
|---|---|
protected ClientConnectionManager |
connManager
The connection manager.
|
protected HttpProcessor |
httpProcessor
The HTTP protocol processor.
|
protected ConnectionKeepAliveStrategy |
keepAliveStrategy
The keep-alive duration strategy.
|
protected ManagedClientConnection |
managedConn
The currently allocated connection.
|
protected HttpParams |
params
The HTTP parameters.
|
protected AuthenticationHandler |
proxyAuthHandler
Deprecated.
|
protected AuthState |
proxyAuthState |
protected AuthenticationStrategy |
proxyAuthStrategy
The proxy authentication handler.
|
protected RedirectHandler |
redirectHandler
Deprecated.
|
protected RedirectStrategy |
redirectStrategy
The redirect strategy.
|
protected HttpRequestExecutor |
requestExec
The request executor.
|
protected HttpRequestRetryHandler |
retryHandler
The request retry handler.
|
protected ConnectionReuseStrategy |
reuseStrategy
The connection re-use strategy.
|
protected HttpRoutePlanner |
routePlanner
The route planner.
|
protected AuthenticationHandler |
targetAuthHandler
Deprecated.
|
protected AuthState |
targetAuthState |
protected AuthenticationStrategy |
targetAuthStrategy
The target authentication handler.
|
protected UserTokenHandler |
userTokenHandler
The user token handler.
|
| Modifier and Type | Method and Description |
|---|---|
protected HttpRequest |
createConnectRequest(HttpRoute route,
HttpContext context)
Creates the CONNECT request for tunnelling.
|
protected boolean |
createTunnelToProxy(HttpRoute route,
int hop,
HttpContext context)
Creates a tunnel to an intermediate proxy.
|
protected boolean |
createTunnelToTarget(HttpRoute route,
HttpContext context)
Creates a tunnel to the target server.
|
protected HttpRoute |
determineRoute(HttpHost target,
HttpRequest request,
HttpContext context)
Determines the route for a request.
|
protected void |
establishRoute(HttpRoute route,
HttpContext context)
Establishes the target route.
|
HttpResponse |
execute(HttpHost target,
HttpRequest request,
HttpContext context)
Executes a request.
|
protected RoutedRequest |
handleResponse(RoutedRequest roureq,
HttpResponse response,
HttpContext context)
Analyzes a response to check need for a followup.
|
protected void |
releaseConnection()
Returns the connection back to the connection manager
and prepares for retrieving a new connection during
the next request.
|
protected void |
rewriteRequestURI(RequestWrapper request,
HttpRoute route) |
protected final ClientConnectionManager connManager
protected final HttpRoutePlanner routePlanner
protected final ConnectionReuseStrategy reuseStrategy
protected final ConnectionKeepAliveStrategy keepAliveStrategy
protected final HttpRequestExecutor requestExec
protected final HttpProcessor httpProcessor
protected final HttpRequestRetryHandler retryHandler
@Deprecated protected final RedirectHandler redirectHandler
protected final RedirectStrategy redirectStrategy
@Deprecated protected final AuthenticationHandler targetAuthHandler
protected final AuthenticationStrategy targetAuthStrategy
@Deprecated protected final AuthenticationHandler proxyAuthHandler
protected final AuthenticationStrategy proxyAuthStrategy
protected final UserTokenHandler userTokenHandler
protected final HttpParams params
protected ManagedClientConnection managedConn
protected final AuthState targetAuthState
protected final AuthState proxyAuthState
@Deprecated public DefaultRequestDirector(HttpRequestExecutor requestExec, ClientConnectionManager conman, ConnectionReuseStrategy reustrat, ConnectionKeepAliveStrategy kastrat, HttpRoutePlanner rouplan, HttpProcessor httpProcessor, HttpRequestRetryHandler retryHandler, RedirectHandler redirectHandler, AuthenticationHandler targetAuthHandler, AuthenticationHandler proxyAuthHandler, UserTokenHandler userTokenHandler, HttpParams params)
@Deprecated public DefaultRequestDirector(org.apache.commons.logging.Log log, HttpRequestExecutor requestExec, ClientConnectionManager conman, ConnectionReuseStrategy reustrat, ConnectionKeepAliveStrategy kastrat, HttpRoutePlanner rouplan, HttpProcessor httpProcessor, HttpRequestRetryHandler retryHandler, RedirectStrategy redirectStrategy, AuthenticationHandler targetAuthHandler, AuthenticationHandler proxyAuthHandler, UserTokenHandler userTokenHandler, HttpParams params)
public DefaultRequestDirector(org.apache.commons.logging.Log log,
HttpRequestExecutor requestExec,
ClientConnectionManager conman,
ConnectionReuseStrategy reustrat,
ConnectionKeepAliveStrategy kastrat,
HttpRoutePlanner rouplan,
HttpProcessor httpProcessor,
HttpRequestRetryHandler retryHandler,
RedirectStrategy redirectStrategy,
AuthenticationStrategy targetAuthStrategy,
AuthenticationStrategy proxyAuthStrategy,
UserTokenHandler userTokenHandler,
HttpParams params)
protected void rewriteRequestURI(RequestWrapper request, HttpRoute route) throws ProtocolException
ProtocolExceptionpublic HttpResponse execute(HttpHost target, HttpRequest request, HttpContext context) throws HttpException, IOException
RequestDirectorHttpMethodDirector
in HttpClient 3.execute in interface RequestDirectortarget - the target host for the request.
Implementations may accept null
if they can still determine a route, for example
to a default target or by inspecting the request.request - the request to executecontext - the context for executing the requestHttpException - in case of a problemIOException - in case of an IO problem
or if the connection was abortedprotected void releaseConnection()
protected HttpRoute determineRoute(HttpHost target, HttpRequest request, HttpContext context) throws HttpException
execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext)
to determine the route for either the original or a followup request.target - the target host for the request.
Implementations may accept null
if they can still determine a route, for example
to a default target or by inspecting the request.request - the request to executecontext - the context to use for the execution,
never nullHttpException - in case of a problemprotected void establishRoute(HttpRoute route, HttpContext context) throws HttpException, IOException
route - the route to establishcontext - the context for the request executionHttpException - in case of a problemIOException - in case of an IO problemprotected boolean createTunnelToTarget(HttpRoute route, HttpContext context) throws HttpException, IOException
route - the route to establishcontext - the context for request executiontrue if the tunnelled route is secure,
false otherwise.
The implementation here always returns false,
but derived classes may override.HttpException - in case of a problemIOException - in case of an IO problemprotected boolean createTunnelToProxy(HttpRoute route, int hop, HttpContext context) throws HttpException, IOException
route - the route to establishhop - the hop in the route to establish now.
route.getHopTarget(hop)
will return the proxy to tunnel to.context - the context for request executiontrue if the partially tunnelled connection
is secure, false otherwise.HttpException - in case of a problemIOException - in case of an IO problemprotected HttpRequest createConnectRequest(HttpRoute route, HttpContext context)
createTunnelToTarget.route - the route to establishcontext - the context for request executionprotected RoutedRequest handleResponse(RoutedRequest roureq, HttpResponse response, HttpContext context) throws HttpException, IOException
roureq - the request and route.response - the response to analayzecontext - the context used for the current request executionnull if the response should be returned as isHttpException - in case of a problemIOException - in case of an IO problemCopyright © 1999–2013 The Apache Software Foundation. All rights reserved.