Class CachingHttpClient
- java.lang.Object
-
- org.apache.http.impl.client.cache.CachingHttpClient
-
- All Implemented Interfaces:
org.apache.http.client.HttpClient
@Deprecated @Contract(threading=SAFE_CONDITIONAL) public class CachingHttpClient extends java.lang.Object implements org.apache.http.client.HttpClientDeprecated.(4.3) useCachingHttpClientBuilderorCachingHttpClients.The
CachingHttpClientis meant to be a drop-in replacement for aDefaultHttpClientthat 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 aCachingHttpClientby providing a "backend"HttpClientused for making actual network requests and provide anHttpCacheStorageinstance 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 aCachingHttpClientfrom it.Generally speaking, the
CachingHttpClientis 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 aCachingHttpClientinto an existing application without breaking anything.Folks that would like to experiment with alternative storage backends should look at the
HttpCacheStorageinterface and the related package documentation there. You may also be interested in the providedEhCacheandmemcachedstorage backends.- Since:
- 4.1
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringCACHE_RESPONSE_STATUSDeprecated.This is the name under which theCacheResponseStatusof a request (for example, whether it resulted in a cache hit) will be recorded if anHttpContextis provided during execution.
-
Constructor Summary
Constructors Constructor Description CachingHttpClient()Deprecated.Constructs aCachingHttpClientwith default caching settings that stores cache entries in memory and uses a vanillaDefaultHttpClientfor backend requests.CachingHttpClient(org.apache.http.client.HttpClient client)Deprecated.Constructs aCachingHttpClientwith default caching settings that stores cache entries in memory and uses the givenHttpClientfor backend requests.CachingHttpClient(org.apache.http.client.HttpClient client, HttpCacheStorage storage, CacheConfig config)Deprecated.Constructs aCachingHttpClientwith the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClientfor backend requests.CachingHttpClient(org.apache.http.client.HttpClient client, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)Deprecated.Constructs aCachingHttpClientwith the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClientfor backend requests.CachingHttpClient(org.apache.http.client.HttpClient client, CacheConfig config)Deprecated.Constructs aCachingHttpClientwith the given caching options that stores cache entries in memory and uses the givenHttpClientfor backend requests.CachingHttpClient(CacheConfig config)Deprecated.Constructs aCachingHttpClientwith the given caching options that stores cache entries in memory and uses a vanillaDefaultHttpClientfor backend requests.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description org.apache.http.HttpResponseexecute(org.apache.http.client.methods.HttpUriRequest request)Deprecated.<T> Texecute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler)Deprecated.<T> Texecute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context)Deprecated.org.apache.http.HttpResponseexecute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.protocol.HttpContext context)Deprecated.org.apache.http.HttpResponseexecute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request)Deprecated.<T> Texecute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler)Deprecated.<T> Texecute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context)Deprecated.org.apache.http.HttpResponseexecute(org.apache.http.HttpHost target, org.apache.http.HttpRequest originalRequest, org.apache.http.protocol.HttpContext context)Deprecated.longgetCacheHits()Deprecated.Reports the number of times that the cache successfully responded to anHttpRequestwithout contacting the origin server.longgetCacheMisses()Deprecated.Reports the number of times that the cache contacted the origin server because it had no appropriate response cached.longgetCacheUpdates()Deprecated.Reports the number of times that the cache was able to satisfy a response by revalidating an existing but stale cache entry.org.apache.http.conn.ClientConnectionManagergetConnectionManager()Deprecated.org.apache.http.params.HttpParamsgetParams()Deprecated.booleanisSharedCache()Deprecated.Reports whether thisCachingHttpClientis configured as a shared (public) or non-shared (private) cache.booleansupportsRangeAndContentRangeHeaders()Deprecated.Reports whether thisCachingHttpClientimplementation supports byte-range requests as specified by theRangeandContent-Rangeheaders.
-
-
-
Field Detail
-
CACHE_RESPONSE_STATUS
public static final java.lang.String CACHE_RESPONSE_STATUS
Deprecated.This is the name under which theCacheResponseStatusof a request (for example, whether it resulted in a cache hit) will be recorded if anHttpContextis provided during execution.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
CachingHttpClient
public CachingHttpClient()
Deprecated.Constructs aCachingHttpClientwith default caching settings that stores cache entries in memory and uses a vanillaDefaultHttpClientfor backend requests.
-
CachingHttpClient
public CachingHttpClient(CacheConfig config)
Deprecated.Constructs aCachingHttpClientwith the given caching options that stores cache entries in memory and uses a vanillaDefaultHttpClientfor backend requests.- Parameters:
config- cache module options
-
CachingHttpClient
public CachingHttpClient(org.apache.http.client.HttpClient client)
Deprecated.Constructs aCachingHttpClientwith default caching settings that stores cache entries in memory and uses the givenHttpClientfor backend requests.- Parameters:
client- used to make origin requests
-
CachingHttpClient
public CachingHttpClient(org.apache.http.client.HttpClient client, CacheConfig config)Deprecated.Constructs aCachingHttpClientwith the given caching options that stores cache entries in memory and uses the givenHttpClientfor backend requests.- Parameters:
config- cache module optionsclient- used to make origin requests
-
CachingHttpClient
public CachingHttpClient(org.apache.http.client.HttpClient client, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)Deprecated.Constructs aCachingHttpClientwith the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClientfor 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(org.apache.http.client.HttpClient client, HttpCacheStorage storage, CacheConfig config)Deprecated.Constructs aCachingHttpClientwith the given caching options that stores cache entries in the provided storage backend and uses the givenHttpClientfor 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 anHttpRequestwithout 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 org.apache.http.HttpResponse execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request) throws java.io.IOExceptionDeprecated.- Specified by:
executein interfaceorg.apache.http.client.HttpClient- Throws:
java.io.IOException
-
execute
public <T> T execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler) throws java.io.IOExceptionDeprecated.- Specified by:
executein interfaceorg.apache.http.client.HttpClient- Throws:
java.io.IOException
-
execute
public <T> T execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context) throws java.io.IOExceptionDeprecated.- Specified by:
executein interfaceorg.apache.http.client.HttpClient- Throws:
java.io.IOException
-
execute
public org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest request) throws java.io.IOExceptionDeprecated.- Specified by:
executein interfaceorg.apache.http.client.HttpClient- Throws:
java.io.IOException
-
execute
public org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.protocol.HttpContext context) throws java.io.IOExceptionDeprecated.- Specified by:
executein interfaceorg.apache.http.client.HttpClient- Throws:
java.io.IOException
-
execute
public <T> T execute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler) throws java.io.IOExceptionDeprecated.- Specified by:
executein interfaceorg.apache.http.client.HttpClient- Throws:
java.io.IOException
-
execute
public <T> T execute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context) throws java.io.IOExceptionDeprecated.- Specified by:
executein interfaceorg.apache.http.client.HttpClient- Throws:
java.io.IOException
-
getConnectionManager
public org.apache.http.conn.ClientConnectionManager getConnectionManager()
Deprecated.- Specified by:
getConnectionManagerin interfaceorg.apache.http.client.HttpClient
-
getParams
public org.apache.http.params.HttpParams getParams()
Deprecated.- Specified by:
getParamsin interfaceorg.apache.http.client.HttpClient
-
execute
public org.apache.http.HttpResponse execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest originalRequest, org.apache.http.protocol.HttpContext context) throws java.io.IOExceptionDeprecated.- Specified by:
executein interfaceorg.apache.http.client.HttpClient- Throws:
java.io.IOException
-
supportsRangeAndContentRangeHeaders
public boolean supportsRangeAndContentRangeHeaders()
Deprecated.Reports whether thisCachingHttpClientimplementation supports byte-range requests as specified by theRangeandContent-Rangeheaders.- Returns:
trueif byte-range requests are supported
-
isSharedCache
public boolean isSharedCache()
Deprecated.Reports whether thisCachingHttpClientis configured as a shared (public) or non-shared (private) cache. SeeCacheConfig.setSharedCache(boolean).- Returns:
trueif we are behaving as a shared (public) cache
-
-