Class CachingHttpClient
- java.lang.Object
-
- org.apache.http.impl.client.cache.CachingHttpClient
-
- All Implemented Interfaces:
HttpClient
@Deprecated @Contract(threading=SAFE_CONDITIONAL) public class CachingHttpClient extends java.lang.Object implements HttpClient
Deprecated.(4.3) useCachingHttpClientBuilder
orCachingHttpClients
.The
CachingHttpClient
is meant to be a drop-in replacement for aDefaultHttpClient
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 aCachingHttpClient
by providing a "backend"HttpClient
used for making actual network requests and provide anHttpCacheStorage
instance to use for holding onto cached responses. Additional configuration options can be provided by passing in aCacheConfig
. 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 aCachingHttpClient
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 aCachingHttpClient
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 providedEhCache
andmemcached
storage backends.- Since:
- 4.1
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CACHE_RESPONSE_STATUS
Deprecated.This is the name under which theCacheResponseStatus
of a request (for example, whether it resulted in a cache hit) will be recorded if anHttpContext
is provided during execution.
-
Constructor Summary
Constructors Constructor Description CachingHttpClient()
Deprecated.Constructs aCachingHttpClient
with default caching settings that stores cache entries in memory and uses a vanillaDefaultHttpClient
for backend requests.CachingHttpClient(HttpClient client)
Deprecated.Constructs aCachingHttpClient
with default caching settings that stores cache entries in memory and uses the givenHttpClient
for backend requests.CachingHttpClient(HttpClient client, HttpCacheStorage storage, CacheConfig config)
Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClient
for backend requests.CachingHttpClient(HttpClient client, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)
Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClient
for backend requests.CachingHttpClient(HttpClient client, CacheConfig config)
Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in memory and uses the givenHttpClient
for backend requests.CachingHttpClient(CacheConfig config)
Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in memory and uses a vanillaDefaultHttpClient
for backend requests.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description HttpResponse
execute(HttpUriRequest request)
Deprecated.Executes HTTP request using the default context.<T> T
execute(HttpUriRequest request, ResponseHandler<? extends T> responseHandler)
Deprecated.Executes HTTP 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 HTTP request using the given context and processes the response using the given response handler.HttpResponse
execute(HttpUriRequest request, HttpContext context)
Deprecated.Executes HTTP request using the given context.HttpResponse
execute(HttpHost target, HttpRequest request)
Deprecated.Executes HTTP request using the default context.<T> T
execute(HttpHost target, HttpRequest request, ResponseHandler<? extends T> responseHandler)
Deprecated.Executes HTTP 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 HTTP request to the target using the given context and processes the response using the given response handler.HttpResponse
execute(HttpHost target, HttpRequest originalRequest, HttpContext context)
Deprecated.Executes HTTP request using the given context.long
getCacheHits()
Deprecated.Reports the number of times that the cache successfully responded to anHttpRequest
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 thisCachingHttpClient
is configured as a shared (public) or non-shared (private) cache.boolean
supportsRangeAndContentRangeHeaders()
Deprecated.Reports whether thisCachingHttpClient
implementation supports byte-range requests as specified by theRange
andContent-Range
headers.
-
-
-
Field Detail
-
CACHE_RESPONSE_STATUS
public static final java.lang.String CACHE_RESPONSE_STATUS
Deprecated.This is the name under which theCacheResponseStatus
of a request (for example, whether it resulted in a cache hit) will be recorded if anHttpContext
is provided during execution.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
CachingHttpClient
public CachingHttpClient()
Deprecated.Constructs aCachingHttpClient
with default caching settings that stores cache entries in memory and uses a vanillaDefaultHttpClient
for backend requests.
-
CachingHttpClient
public CachingHttpClient(CacheConfig config)
Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in memory and uses a vanillaDefaultHttpClient
for backend requests.- Parameters:
config
- cache module options
-
CachingHttpClient
public CachingHttpClient(HttpClient client)
Deprecated.Constructs aCachingHttpClient
with default caching settings that stores cache entries in memory and uses the givenHttpClient
for backend requests.- Parameters:
client
- used to make origin requests
-
CachingHttpClient
public CachingHttpClient(HttpClient client, CacheConfig config)
Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in memory and uses the givenHttpClient
for backend requests.- Parameters:
config
- cache module optionsclient
- used to make origin requests
-
CachingHttpClient
public CachingHttpClient(HttpClient client, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)
Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClient
for backend requests. However, cached response bodies are managed using the givenResourceFactory
.- Parameters:
client
- used to make origin requestsresourceFactory
- how to manage cached response bodiesstorage
- where to store cache entriesconfig
- cache module options
-
CachingHttpClient
public CachingHttpClient(HttpClient client, HttpCacheStorage storage, CacheConfig config)
Deprecated.Constructs aCachingHttpClient
with the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClient
for backend requests.- Parameters:
client
- used to make origin requestsstorage
- where to store cache entriesconfig
- cache module options
-
-
Method Detail
-
getCacheHits
public long getCacheHits()
Deprecated.Reports the number of times that the cache successfully responded to anHttpRequest
without contacting the origin server.- Returns:
- the number of cache hits
-
getCacheMisses
public long getCacheMisses()
Deprecated.Reports the number of times that the cache contacted the origin server because it had no appropriate response cached.- Returns:
- the number of cache misses
-
getCacheUpdates
public 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.- Returns:
- the number of cache revalidations
-
execute
public HttpResponse execute(HttpHost target, HttpRequest request) throws java.io.IOException
Deprecated.Description copied from interface:HttpClient
Executes HTTP request using the default context.- Specified by:
execute
in interfaceHttpClient
- Parameters:
target
- the target host for the request. Implementations may acceptnull
if they can still determine a route, for example to a default target or by inspecting the request.request
- the request to execute- Returns:
- the response to the request. This is always a final response, never an intermediate response with an 1xx status code. Whether redirects or authentication challenges will be returned or handled automatically depends on the implementation and configuration of this client.
- Throws:
java.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol error
-
execute
public <T> T execute(HttpHost target, HttpRequest request, ResponseHandler<? extends T> responseHandler) throws java.io.IOException
Deprecated.Description copied from interface:HttpClient
Executes HTTP request to the target using the default context and processes the response using the given response handler.Implementing classes are required to ensure that the content entity associated with the response is fully consumed and the underlying connection is released back to the connection manager automatically in all cases relieving individual
ResponseHandler
s from having to manage resource deallocation internally.- Specified by:
execute
in interfaceHttpClient
- Parameters:
target
- the target host for the request. Implementations may acceptnull
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 handler- Returns:
- the response object as generated by the response handler.
- Throws:
java.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol error
-
execute
public <T> T execute(HttpHost target, HttpRequest request, ResponseHandler<? extends T> responseHandler, HttpContext context) throws java.io.IOException
Deprecated.Description copied from interface:HttpClient
Executes HTTP request to the target using the given context and processes the response using the given response handler.Implementing classes are required to ensure that the content entity associated with the response is fully consumed and the underlying connection is released back to the connection manager automatically in all cases relieving individual
ResponseHandler
s from having to manage resource deallocation internally.- Specified by:
execute
in interfaceHttpClient
- Parameters:
target
- the target host for the request. Implementations may acceptnull
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, ornull
to use the default context- Returns:
- the response object as generated by the response handler.
- Throws:
java.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol error
-
execute
public HttpResponse execute(HttpUriRequest request) throws java.io.IOException
Deprecated.Description copied from interface:HttpClient
Executes HTTP request using the default context.- Specified by:
execute
in interfaceHttpClient
- Parameters:
request
- the request to execute- Returns:
- the response to the request. This is always a final response, never an intermediate response with an 1xx status code. Whether redirects or authentication challenges will be returned or handled automatically depends on the implementation and configuration of this client.
- Throws:
java.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol error
-
execute
public HttpResponse execute(HttpUriRequest request, HttpContext context) throws java.io.IOException
Deprecated.Description copied from interface:HttpClient
Executes HTTP request using the given context.- Specified by:
execute
in interfaceHttpClient
- Parameters:
request
- the request to executecontext
- the context to use for the execution, ornull
to use the default context- Returns:
- the response to the request. This is always a final response, never an intermediate response with an 1xx status code. Whether redirects or authentication challenges will be returned or handled automatically depends on the implementation and configuration of this client.
- Throws:
java.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol error
-
execute
public <T> T execute(HttpUriRequest request, ResponseHandler<? extends T> responseHandler) throws java.io.IOException
Deprecated.Description copied from interface:HttpClient
Executes HTTP request using the default context and processes the response using the given response handler.Implementing classes are required to ensure that the content entity associated with the response is fully consumed and the underlying connection is released back to the connection manager automatically in all cases relieving individual
ResponseHandler
s from having to manage resource deallocation internally.- Specified by:
execute
in interfaceHttpClient
- Parameters:
request
- the request to executeresponseHandler
- the response handler- Returns:
- the response object as generated by the response handler.
- Throws:
java.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol error
-
execute
public <T> T execute(HttpUriRequest request, ResponseHandler<? extends T> responseHandler, HttpContext context) throws java.io.IOException
Deprecated.Description copied from interface:HttpClient
Executes HTTP request using the given context and processes the response using the given response handler.Implementing classes are required to ensure that the content entity associated with the response is fully consumed and the underlying connection is released back to the connection manager automatically in all cases relieving individual
ResponseHandler
s from having to manage resource deallocation internally.- Specified by:
execute
in interfaceHttpClient
- Parameters:
request
- the request to executeresponseHandler
- the response handlercontext
- the context to use for the execution, ornull
to use the default context- Returns:
- the response object as generated by the response handler.
- Throws:
java.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol error
-
getConnectionManager
public ClientConnectionManager getConnectionManager()
Deprecated.Description copied from interface:HttpClient
Obtains the connection manager used by this client.- Specified by:
getConnectionManager
in interfaceHttpClient
- Returns:
- the connection manager
-
getParams
public HttpParams getParams()
Deprecated.Description copied from interface:HttpClient
Obtains the parameters for this client. These parameters will become defaults for all requests being executed with this client, and for the parameters of dependent objects in this client.- Specified by:
getParams
in interfaceHttpClient
- Returns:
- the default parameters
-
execute
public HttpResponse execute(HttpHost target, HttpRequest originalRequest, HttpContext context) throws java.io.IOException
Deprecated.Description copied from interface:HttpClient
Executes HTTP request using the given context.- Specified by:
execute
in interfaceHttpClient
- Parameters:
target
- the target host for the request. Implementations may acceptnull
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, ornull
to use the default context- Returns:
- the response to the request. This is always a final response, never an intermediate response with an 1xx status code. Whether redirects or authentication challenges will be returned or handled automatically depends on the implementation and configuration of this client.
- Throws:
java.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol error
-
supportsRangeAndContentRangeHeaders
public boolean supportsRangeAndContentRangeHeaders()
Deprecated.Reports whether thisCachingHttpClient
implementation supports byte-range requests as specified by theRange
andContent-Range
headers.- Returns:
true
if byte-range requests are supported
-
isSharedCache
public boolean isSharedCache()
Deprecated.Reports whether thisCachingHttpClient
is configured as a shared (public) or non-shared (private) cache. SeeCacheConfig.setSharedCache(boolean)
.- Returns:
true
if we are behaving as a shared (public) cache
-
-