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 Object implements org.apache.http.client.HttpClient
Deprecated.

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

invalid reference
EhCache
and
invalid reference
memcached
storage backends.

Since:
4.1
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    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 Summary

    Constructors
    Constructor
    Description
    Deprecated.
    Constructs a CachingHttpClient with default caching settings that stores cache entries in memory and uses a vanilla DefaultHttpClient for backend requests.
    CachingHttpClient(org.apache.http.client.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(org.apache.http.client.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(org.apache.http.client.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.
    CachingHttpClient(org.apache.http.client.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.
    Deprecated.
    Constructs a CachingHttpClient with the given caching options that stores cache entries in memory and uses a vanilla DefaultHttpClient for backend requests.
  • Method Summary

    Modifier and Type
    Method
    Description
    org.apache.http.HttpResponse
    execute(org.apache.http.client.methods.HttpUriRequest request)
    Deprecated.
     
    <T> T
    execute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler)
    Deprecated.
     
    <T> T
    execute(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.HttpResponse
    execute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.protocol.HttpContext context)
    Deprecated.
     
    org.apache.http.HttpResponse
    execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request)
    Deprecated.
     
    <T> T
    execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler)
    Deprecated.
     
    <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)
    Deprecated.
     
    org.apache.http.HttpResponse
    execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest originalRequest, org.apache.http.protocol.HttpContext context)
    Deprecated.
     
    long
    Deprecated.
    Reports the number of times that the cache successfully responded to an HttpRequest without contacting the origin server.
    long
    Deprecated.
    Reports the number of times that the cache contacted the origin server because it had no appropriate response cached.
    long
    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.ClientConnectionManager
    Deprecated.
     
    org.apache.http.params.HttpParams
    Deprecated.
     
    boolean
    Deprecated.
    Reports whether this CachingHttpClient is configured as a shared (public) or non-shared (private) cache.
    boolean
    Deprecated.
    Reports whether this CachingHttpClient implementation supports byte-range requests as specified by the Range and Content-Range headers.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • CACHE_RESPONSE_STATUS

      public static final 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.
      See Also:
  • Constructor Details

    • CachingHttpClient

      public CachingHttpClient()
      Deprecated.
      Constructs a CachingHttpClient with default caching settings that stores cache entries in memory and uses a vanilla DefaultHttpClient for backend requests.
    • CachingHttpClient

      public 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.
      Parameters:
      config - cache module options
    • CachingHttpClient

      public CachingHttpClient(org.apache.http.client.HttpClient client)
      Deprecated.
      Constructs a CachingHttpClient with default caching settings that stores cache entries in memory and uses the given HttpClient for backend requests.
      Parameters:
      client - used to make origin requests
    • CachingHttpClient

      public CachingHttpClient(org.apache.http.client.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.
      Parameters:
      client - used to make origin requests
      config - cache module options
    • CachingHttpClient

      public CachingHttpClient(org.apache.http.client.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. However, cached response bodies are managed using the given ResourceFactory.
      Parameters:
      client - used to make origin requests
      resourceFactory - how to manage cached response bodies
      storage - where to store cache entries
      config - cache module options
    • CachingHttpClient

      public CachingHttpClient(org.apache.http.client.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.
      Parameters:
      client - used to make origin requests
      storage - where to store cache entries
      config - cache module options
  • Method Details

    • getCacheHits

      public long getCacheHits()
      Deprecated.
      Reports the number of times that the cache successfully responded to an HttpRequest 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 org.apache.http.HttpResponse execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request) throws IOException
      Deprecated.
      Specified by:
      execute in interface org.apache.http.client.HttpClient
      Throws:
      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 IOException
      Deprecated.
      Specified by:
      execute in interface org.apache.http.client.HttpClient
      Throws:
      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 IOException
      Deprecated.
      Specified by:
      execute in interface org.apache.http.client.HttpClient
      Throws:
      IOException
    • execute

      public org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest request) throws IOException
      Deprecated.
      Specified by:
      execute in interface org.apache.http.client.HttpClient
      Throws:
      IOException
    • execute

      public org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.protocol.HttpContext context) throws IOException
      Deprecated.
      Specified by:
      execute in interface org.apache.http.client.HttpClient
      Throws:
      IOException
    • execute

      public <T> T execute(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler) throws IOException
      Deprecated.
      Specified by:
      execute in interface org.apache.http.client.HttpClient
      Throws:
      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 IOException
      Deprecated.
      Specified by:
      execute in interface org.apache.http.client.HttpClient
      Throws:
      IOException
    • getConnectionManager

      public org.apache.http.conn.ClientConnectionManager getConnectionManager()
      Deprecated.
      Specified by:
      getConnectionManager in interface org.apache.http.client.HttpClient
    • getParams

      public org.apache.http.params.HttpParams getParams()
      Deprecated.
      Specified by:
      getParams in interface org.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 IOException
      Deprecated.
      Specified by:
      execute in interface org.apache.http.client.HttpClient
      Throws:
      IOException
    • supportsRangeAndContentRangeHeaders

      public boolean supportsRangeAndContentRangeHeaders()
      Deprecated.
      Reports whether this CachingHttpClient implementation supports byte-range requests as specified by the Range and Content-Range headers.
      Returns:
      true if byte-range requests are supported
    • isSharedCache

      public boolean isSharedCache()
      Deprecated.
      Reports whether this CachingHttpClient is configured as a shared (public) or non-shared (private) cache. See CacheConfig.setSharedCache(boolean).
      Returns:
      true if we are behaving as a shared (public) cache