protected boolean requestMinorVersionIsTooHighMajorVersionsMatch(final HttpRequest request) { final ProtocolVersion requestProtocol = request.getVersion(); if (requestProtocol == null) { return false; } if (requestProtocol.getMajor() != HttpVersion.HTTP_1_1.getMajor()) { return false; } if (requestProtocol.getMinor() > HttpVersion.HTTP_1_1.getMinor()) { return true; } return false; }
protected boolean requestVersionIsTooLow(final HttpRequest request) { final ProtocolVersion requestProtocol = request.getVersion(); return requestProtocol != null && requestProtocol.compareToVersion(HttpVersion.HTTP_1_1) < 0; }
private void ensure304DoesNotContainExtraEntityHeaders(final HttpResponse response) { final String[] disallowedEntityHeaders = { HeaderConstants.ALLOW, HttpHeaders.CONTENT_ENCODING, "Content-Language", HttpHeaders.CONTENT_LENGTH, "Content-MD5", "Content-Range", HttpHeaders.CONTENT_TYPE, HeaderConstants.LAST_MODIFIED }; if (response.getCode() == HttpStatus.SC_NOT_MODIFIED) { for(final String hdr : disallowedEntityHeaders) { response.removeHeaders(hdr); } } }
/** * For 304 Not modified responses, adds a "Last-Modified" header with the * value of the "If-Modified-Since" header passed in the request. This * header is required to be able to reuse match the cache entry for * subsequent requests but as defined in http specifications it is not * included in 304 responses by backend servers. This header will not be * included in the resulting response. */ void storeRequestIfModifiedSinceFor304Response(final HttpRequest request, final HttpResponse backendResponse) { if (backendResponse.getCode() == HttpStatus.SC_NOT_MODIFIED) { final Header h = request.getFirstHeader("If-Modified-Since"); if (h != null) { backendResponse.addHeader("Last-Modified", h.getValue()); } } }
private void ensure200ForOPTIONSRequestWithNoBodyHasContentLengthZero(final HttpRequest request, final HttpResponse response) { if (!request.getMethod().equalsIgnoreCase(HeaderConstants.OPTIONS_METHOD)) { return; } if (response.getCode() != HttpStatus.SC_OK) { return; } if (response.getFirstHeader(HttpHeaders.CONTENT_LENGTH) == null) { response.addHeader(HttpHeaders.CONTENT_LENGTH, "0"); } }
private void requestDidNotExpect100ContinueButResponseIsOne( final HttpRequest originalRequest, final HttpResponse response) throws IOException { if (response.getCode() != HttpStatus.SC_CONTINUE) { return; } final Header header = originalRequest.getFirstHeader(HttpHeaders.EXPECT); if (header != null && header.getValue().equalsIgnoreCase(HeaderElements.CONTINUE)) { return; } throw new ClientProtocolException(UNEXPECTED_100_CONTINUE); }
private boolean hasValidDateField(final HttpRequest request, final String headerName) { for(final Header h : request.getHeaders(headerName)) { final Date date = DateUtils.parseDate(h.getValue()); return date != null; } return false; } }
private void ensurePartialContentIsNotSentToAClientThatDidNotRequestIt(final HttpRequest request, final HttpResponse response) throws IOException { if (request.getFirstHeader(HeaderConstants.RANGE) != null || response.getCode() != HttpStatus.SC_PARTIAL_CONTENT) { return; } throw new ClientProtocolException(UNEXPECTED_PARTIAL_CONTENT); }
public Request addHeader(final String name, final String value) { this.request.addHeader(name, value); return this; }
private boolean transferEncodingIsPresent(final HttpResponse response) { final Header hdr = response.getFirstHeader(HttpHeaders.TRANSFER_ENCODING); return hdr != null; }
public Request version(final HttpVersion version) { this.request.setVersion(version); return this; }
@Override public String getContentEncoding() { return entity.getContentEncoding(); }
public Request removeHeaders(final String name) { this.request.removeHeaders(name); return this; }
@Override public Set<String> getTrailerNames() { return entity.getTrailerNames(); }
private void removeResponseTransferEncoding(final HttpResponse response) { response.removeHeaders("TE"); response.removeHeaders(HttpHeaders.TRANSFER_ENCODING); }
/** * @since 4.3 */ public Request setHeader(final String name, final String value) { this.request.setHeader(name, value); return this; }
public Request removeHeader(final Header header) { this.request.removeHeader(header); return this; }
private void transferEncodingIsNotReturnedTo1_0Client( final HttpRequest originalRequest, final HttpResponse response) { final ProtocolVersion version = originalRequest.getVersion() != null ? originalRequest.getVersion() : HttpVersion.DEFAULT; if (version.compareToVersion(HttpVersion.HTTP_1_1) >= 0) { return; } removeResponseTransferEncoding(response); }
/** * @since 4.3 */ public Request setHeader(final Header header) { this.request.setHeader(header); return this; }
public Request userAgent(final String agent) { this.request.setHeader(HttpHeaders.USER_AGENT, agent); return this; }