CachingHttpClientBuilder
or CachingHttpClients
.@Deprecated @ThreadSafe public class CachingHttpClient extends Object implements HttpClient
The CachingHttpClient
is meant to be a drop-in replacement for
a DefaultHttpClient
that transparently adds client-side caching.
The current implementation is conditionally compliant with HTTP/1.1
(meaning all the MUST and MUST NOTs are obeyed), although quite a lot,
though not all, of the SHOULDs and SHOULD NOTs are obeyed too. Generally
speaking, you construct a CachingHttpClient
by providing a
"backend" HttpClient
used for making actual network requests and
provide an HttpCacheStorage
instance to use for holding onto
cached responses. Additional configuration options can be provided by
passing in a CacheConfig
. Note that all of the usual client
related configuration you want to do vis-a-vis timeouts and connection
pools should be done on this backend client before constructing a CachingHttpClient
from it.
Generally speaking, the CachingHttpClient
is implemented as a
Decorator
of the backend client; for any incoming request it attempts to satisfy
it from the cache, but if it can't, or if it needs to revalidate a stale
cache entry, it will use the backend client to make an actual request.
However, a proper HTTP/1.1 cache won't change the semantics of a request
and response; in particular, if you issue an unconditional request you
will get a full response (although it may be served to you from the cache,
or the cache may make a conditional request on your behalf to the origin).
This notion of "semantic transparency" means you should be able to drop
a CachingHttpClient
into an existing application without breaking
anything.
Folks that would like to experiment with alternative storage backends
should look at the HttpCacheStorage
interface and the related
package documentation there. You may also be interested in the provided
EhCache
and memcached
storage backends.
Modifier and Type | Field and Description |
---|---|
static String |
CACHE_RESPONSE_STATUS
Deprecated.
This is the name under which the
CacheResponseStatus of a request
(for example, whether it resulted in a cache hit) will be recorded if an
HttpContext is provided during execution. |
Constructor and Description |
---|
CachingHttpClient()
Deprecated.
Constructs a
CachingHttpClient with default caching settings that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests. |
CachingHttpClient(CacheConfig config)
Deprecated.
Constructs a
CachingHttpClient with the given caching options that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests. |
CachingHttpClient(HttpClient client)
Deprecated.
Constructs a
CachingHttpClient with default caching settings that
stores cache entries in memory and uses the given HttpClient
for backend requests. |
CachingHttpClient(HttpClient client,
CacheConfig config)
Deprecated.
Constructs a
CachingHttpClient with the given caching options that
stores cache entries in memory and uses the given HttpClient
for backend requests. |
CachingHttpClient(HttpClient client,
HttpCacheStorage storage,
CacheConfig config)
Deprecated.
Constructs a
CachingHttpClient with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient for backend requests. |
CachingHttpClient(HttpClient client,
ResourceFactory resourceFactory,
HttpCacheStorage storage,
CacheConfig config)
Deprecated.
Constructs a
CachingHttpClient with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient for backend requests. |
Modifier and Type | Method and Description |
---|---|
HttpResponse |
execute(HttpHost target,
HttpRequest request)
Deprecated.
Executes a request to the target using the default context.
|
HttpResponse |
execute(HttpHost target,
HttpRequest originalRequest,
HttpContext context)
Deprecated.
Executes a request to the target using the given context.
|
<T> T |
execute(HttpHost target,
HttpRequest request,
ResponseHandler<? extends T> responseHandler)
Deprecated.
Executes a request to the target using the default context and
processes the response using the given response handler.
|
<T> T |
execute(HttpHost target,
HttpRequest request,
ResponseHandler<? extends T> responseHandler,
HttpContext context)
Deprecated.
Executes a request to the target using the given context and
processes the response using the given response handler.
|
HttpResponse |
execute(HttpUriRequest request)
Deprecated.
Executes a request using the default context.
|
HttpResponse |
execute(HttpUriRequest request,
HttpContext context)
Deprecated.
Executes a request using the given context.
|
<T> T |
execute(HttpUriRequest request,
ResponseHandler<? extends T> responseHandler)
Deprecated.
Executes a request using the default context and processes the
response using the given response handler.
|
<T> T |
execute(HttpUriRequest request,
ResponseHandler<? extends T> responseHandler,
HttpContext context)
Deprecated.
Executes a request using the given context and processes the
response using the given response handler.
|
long |
getCacheHits()
Deprecated.
Reports the number of times that the cache successfully responded
to an
HttpRequest without contacting the origin server. |
long |
getCacheMisses()
Deprecated.
Reports the number of times that the cache contacted the origin
server because it had no appropriate response cached.
|
long |
getCacheUpdates()
Deprecated.
Reports the number of times that the cache was able to satisfy
a response by revalidating an existing but stale cache entry.
|
ClientConnectionManager |
getConnectionManager()
Deprecated.
Obtains the connection manager used by this client.
|
HttpParams |
getParams()
Deprecated.
Obtains the parameters for this client.
|
boolean |
isSharedCache()
Deprecated.
Reports whether this
CachingHttpClient is configured as
a shared (public) or non-shared (private) cache. |
boolean |
supportsRangeAndContentRangeHeaders()
Deprecated.
Reports whether this
CachingHttpClient implementation
supports byte-range requests as specified by the Range
and Content-Range headers. |
public static final String CACHE_RESPONSE_STATUS
CacheResponseStatus
of a request
(for example, whether it resulted in a cache hit) will be recorded if an
HttpContext
is provided during execution.public CachingHttpClient()
CachingHttpClient
with default caching settings that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests.public CachingHttpClient(CacheConfig config)
CachingHttpClient
with the given caching options that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests.config
- cache module optionspublic CachingHttpClient(HttpClient client)
CachingHttpClient
with default caching settings that
stores cache entries in memory and uses the given HttpClient
for backend requests.client
- used to make origin requestspublic CachingHttpClient(HttpClient client, CacheConfig config)
CachingHttpClient
with the given caching options that
stores cache entries in memory and uses the given HttpClient
for backend requests.config
- cache module optionsclient
- used to make origin requestspublic CachingHttpClient(HttpClient client, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)
CachingHttpClient
with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient
for backend requests. However, cached
response bodies are managed using the given ResourceFactory
.client
- used to make origin requestsresourceFactory
- how to manage cached response bodiesstorage
- where to store cache entriesconfig
- cache module optionspublic CachingHttpClient(HttpClient client, HttpCacheStorage storage, CacheConfig config)
CachingHttpClient
with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient
for backend requests.client
- used to make origin requestsstorage
- where to store cache entriesconfig
- cache module optionspublic long getCacheHits()
HttpRequest
without contacting the origin server.public long getCacheMisses()
public long getCacheUpdates()
public HttpResponse execute(HttpHost target, HttpRequest request) throws IOException
HttpClient
execute
in interface HttpClient
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 executeIOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic <T> T execute(HttpHost target, HttpRequest request, ResponseHandler<? extends T> responseHandler) throws IOException
HttpClient
ResponseHandler
s from
having to manage resource deallocation internally.execute
in interface HttpClient
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 executeresponseHandler
- the response handlerIOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic <T> T execute(HttpHost target, HttpRequest request, ResponseHandler<? extends T> responseHandler, HttpContext context) throws IOException
HttpClient
ResponseHandler
s from
having to manage resource deallocation internally.execute
in interface HttpClient
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 executeresponseHandler
- the response handlercontext
- the context to use for the execution, or
null
to use the default contextIOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic HttpResponse execute(HttpUriRequest request) throws IOException
HttpClient
execute
in interface HttpClient
request
- the request to executeIOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic HttpResponse execute(HttpUriRequest request, HttpContext context) throws IOException
HttpClient
execute
in interface HttpClient
request
- the request to executecontext
- the context to use for the execution, or
null
to use the default contextIOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic <T> T execute(HttpUriRequest request, ResponseHandler<? extends T> responseHandler) throws IOException
HttpClient
ResponseHandler
s from
having to manage resource deallocation internally.execute
in interface HttpClient
request
- the request to executeresponseHandler
- the response handlerIOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic <T> T execute(HttpUriRequest request, ResponseHandler<? extends T> responseHandler, HttpContext context) throws IOException
HttpClient
ResponseHandler
s from
having to manage resource deallocation internally.execute
in interface HttpClient
request
- the request to executeresponseHandler
- the response handlercontext
- the context to use for the execution, or
null
to use the default contextIOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic ClientConnectionManager getConnectionManager()
HttpClient
getConnectionManager
in interface HttpClient
public HttpParams getParams()
HttpClient
getParams
in interface HttpClient
public HttpResponse execute(HttpHost target, HttpRequest originalRequest, HttpContext context) throws IOException
HttpClient
execute
in interface HttpClient
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.originalRequest
- the request to executecontext
- the context to use for the execution, or
null
to use the default contextIOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic boolean supportsRangeAndContentRangeHeaders()
CachingHttpClient
implementation
supports byte-range requests as specified by the Range
and Content-Range
headers.true
if byte-range requests are supportedpublic boolean isSharedCache()
CachingHttpClient
is configured as
a shared (public) or non-shared (private) cache. See CacheConfig.setSharedCache(boolean)
.true
if we are behaving as a shared (public)
cacheCopyright © 1999–2013 The Apache Software Foundation. All rights reserved.