List of usage examples for org.apache.http.client.cache HeaderConstants IF_NONE_MATCH
String IF_NONE_MATCH
To view the source code for org.apache.http.client.cache HeaderConstants IF_NONE_MATCH.
Click Source Link
From source file:org.apache.http.impl.client.cache.CachedResponseSuitabilityChecker.java
private boolean hasSupportedEtagVadlidator(HttpRequest request) { return request.containsHeader(HeaderConstants.IF_NONE_MATCH); }
From source file:org.apache.http.impl.client.cache.CachedResponseSuitabilityChecker.java
/** * Check entry against If-None-Match//from w ww. ja va 2s . c om * @param request * @param entry * @return */ private boolean etagValidtorMatches(HttpRequest request, HttpCacheEntry entry) { Header etagHeader = entry.getFirstHeader(HeaderConstants.ETAG); String etag = (etagHeader != null) ? etagHeader.getValue() : null; Header[] ifNoneMatch = request.getHeaders(HeaderConstants.IF_NONE_MATCH); if (ifNoneMatch != null) { for (Header h : ifNoneMatch) { for (HeaderElement elt : h.getElements()) { String reqEtag = elt.toString(); if (("*".equals(reqEtag) && etag != null) || reqEtag.equals(etag)) { return true; } } } } return false; }
From source file:org.apache.http.impl.client.cache.CachingExec.java
private CloseableHttpResponse generateCachedResponse(final HttpRequestWrapper request, final HttpContext context, final HttpCacheEntry entry, final Date now) { final CloseableHttpResponse cachedResponse; if (request.containsHeader(HeaderConstants.IF_NONE_MATCH) || request.containsHeader(HeaderConstants.IF_MODIFIED_SINCE)) { cachedResponse = responseGenerator.generateNotModifiedResponse(entry); } else {//from w w w . j a va2 s .c o m cachedResponse = responseGenerator.generateResponse(entry); } setResponseStatus(context, CacheResponseStatus.CACHE_HIT); if (validityPolicy.getStalenessSecs(entry, now) > 0L) { cachedResponse.addHeader(HeaderConstants.WARNING, "110 localhost \"Response is stale\""); } return cachedResponse; }
From source file:org.apache.http.impl.client.cache.CachingHttpAsyncClient.java
private HttpResponse generateCachedResponse(final HttpRequestWrapper request, final HttpCacheContext clientContext, final HttpCacheEntry entry, final Date now) { final HttpResponse cachedResponse; if (request.containsHeader(HeaderConstants.IF_NONE_MATCH) || request.containsHeader(HeaderConstants.IF_MODIFIED_SINCE)) { cachedResponse = this.responseGenerator.generateNotModifiedResponse(entry); } else {/*from w w w . jav a2s. c o m*/ cachedResponse = this.responseGenerator.generateResponse(request, entry); } setResponseStatus(clientContext, CacheResponseStatus.CACHE_HIT); if (this.validityPolicy.getStalenessSecs(entry, now) > 0L) { cachedResponse.addHeader("Warning", "110 localhost \"Response is stale\""); } return cachedResponse; }
From source file:org.apache.http.impl.client.cache.CachingHttpClient.java
private HttpResponse generateCachedResponse(HttpRequest request, HttpContext context, HttpCacheEntry entry, Date now) {//w w w. j ava 2s .com final HttpResponse cachedResponse; if (request.containsHeader(HeaderConstants.IF_NONE_MATCH) || request.containsHeader(HeaderConstants.IF_MODIFIED_SINCE)) { cachedResponse = responseGenerator.generateNotModifiedResponse(entry); } else { cachedResponse = responseGenerator.generateResponse(entry); } setResponseStatus(context, CacheResponseStatus.CACHE_HIT); if (validityPolicy.getStalenessSecs(entry, now) > 0L) { cachedResponse.addHeader("Warning", "110 localhost \"Response is stale\""); } return cachedResponse; }
From source file:org.apache.http.impl.client.cache.ConditionalRequestBuilder.java
/** * When a {@link HttpCacheEntry} is stale but 'might' be used as a response * to an {@link HttpRequest} we will attempt to revalidate the entry with * the origin. Build the origin {@link HttpRequest} here and return it. * * @param request the original request from the caller * @param cacheEntry the entry that needs to be revalidated * @return the wrapped request/* w w w .jav a 2s .co m*/ * @throws ProtocolException when I am unable to build a new origin request. */ public HttpRequest buildConditionalRequest(HttpRequest request, HttpCacheEntry cacheEntry) throws ProtocolException { RequestWrapper wrapperRequest = new RequestWrapper(request); wrapperRequest.resetHeaders(); Header eTag = cacheEntry.getFirstHeader(HeaderConstants.ETAG); if (eTag != null) { wrapperRequest.setHeader(HeaderConstants.IF_NONE_MATCH, eTag.getValue()); } Header lastModified = cacheEntry.getFirstHeader(HeaderConstants.LAST_MODIFIED); if (lastModified != null) { wrapperRequest.setHeader(HeaderConstants.IF_MODIFIED_SINCE, lastModified.getValue()); } boolean mustRevalidate = false; for (Header h : cacheEntry.getHeaders(HeaderConstants.CACHE_CONTROL)) { for (HeaderElement elt : h.getElements()) { if (HeaderConstants.CACHE_CONTROL_MUST_REVALIDATE.equalsIgnoreCase(elt.getName()) || HeaderConstants.CACHE_CONTROL_PROXY_REVALIDATE.equalsIgnoreCase(elt.getName())) { mustRevalidate = true; break; } } } if (mustRevalidate) { wrapperRequest.addHeader("Cache-Control", "max-age=0"); } return wrapperRequest; }
From source file:org.apache.http.impl.client.cache.ConditionalRequestBuilder.java
/** * When a {@link HttpCacheEntry} does not exist for a specific {@link HttpRequest} * we attempt to see if an existing {@link HttpCacheEntry} is appropriate by building * a conditional {@link HttpRequest} using the variants' ETag values. If no such values * exist, the request is unmodified//from w ww. ja v a 2 s.c o m * * @param request the original request from the caller * @param variants * @return the wrapped request */ public HttpRequest buildConditionalRequestFromVariants(HttpRequest request, Map<String, Variant> variants) { RequestWrapper wrapperRequest; try { wrapperRequest = new RequestWrapper(request); } catch (ProtocolException pe) { log.warn("unable to build conditional request", pe); return request; } wrapperRequest.resetHeaders(); // we do not support partial content so all etags are used StringBuilder etags = new StringBuilder(); boolean first = true; for (String etag : variants.keySet()) { if (!first) { etags.append(","); } first = false; etags.append(etag); } wrapperRequest.setHeader(HeaderConstants.IF_NONE_MATCH, etags.toString()); return wrapperRequest; }