private void ensure304DoesNotContainExtraEntityHeaders(final HttpResponse response) { final String[] disallowedEntityHeaders = { HeaderConstants.ALLOW, HTTP.CONTENT_ENCODING, "Content-Language", HTTP.CONTENT_LEN, "Content-MD5", "Content-Range", HTTP.CONTENT_TYPE, HeaderConstants.LAST_MODIFIED }; if (response.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_MODIFIED) { for(final String hdr : disallowedEntityHeaders) { response.removeHeaders(hdr); } } }
private boolean canResponseHaveBody(final HttpResponse response) { final int status = response.getStatusLine().getStatusCode(); return status >= HttpStatus.SC_OK && status != HttpStatus.SC_NO_CONTENT && status != HttpStatus.SC_NOT_MODIFIED && status != HttpStatus.SC_RESET_CONTENT; }
protected boolean requestMinorVersionIsTooHighMajorVersionsMatch(final HttpRequest request) { final ProtocolVersion requestProtocol = request.getProtocolVersion(); if (requestProtocol.getMajor() != HttpVersion.HTTP_1_1.getMajor()) { return false; } if (requestProtocol.getMinor() > HttpVersion.HTTP_1_1.getMinor()) { return true; } return false; }
private void ensure200ForOPTIONSRequestWithNoBodyHasContentLengthZero(final HttpRequest request, final HttpResponse response) { if (!request.getRequestLine().getMethod().equalsIgnoreCase(HeaderConstants.OPTIONS_METHOD)) { return; } if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { return; } if (response.getFirstHeader(HTTP.CONTENT_LEN) == null) { response.addHeader(HTTP.CONTENT_LEN, "0"); } }
private boolean backendResponseMustNotHaveBody(final HttpRequest request, final HttpResponse backendResponse) { return HeaderConstants.HEAD_METHOD.equals(request.getRequestLine().getMethod()) || backendResponse.getStatusLine().getStatusCode() == HttpStatus.SC_NO_CONTENT || backendResponse.getStatusLine().getStatusCode() == HttpStatus.SC_RESET_CONTENT || backendResponse.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_MODIFIED; }
public InputStream getContent() throws IOException { return response.getEntity().getContent(); }
public String getContentType() { if (entity == null) { return null; } Header header = entity.getContentType(); if (header == null) { return null; } return header.getValue(); }
/** * Returns the HTTP response code from the origin * {@link cz.msebera.android.httpclient.HttpResponse}. */ public int getStatusCode() { return this.statusLine.getStatusCode(); }
private RequestProtocolError requestContainsNoCacheDirectiveWithFieldName(final HttpRequest request) { for(final Header h : request.getHeaders(HeaderConstants.CACHE_CONTROL)) { for(final HeaderElement elt : h.getElements()) { if (HeaderConstants.CACHE_CONTROL_NO_CACHE.equalsIgnoreCase(elt.getName()) && elt.getValue() != null) { return RequestProtocolError.NO_CACHE_DIRECTIVE_WITH_FIELD_NAME; } } } return null; } }
@Override public void writeTo(final OutputStream outstream) throws IOException { consumed = true; original.writeTo(outstream); }
protected boolean hasCacheControlParameterFrom(final HttpMessage msg, final String[] params) { final Header[] cacheControlHeaders = msg.getHeaders(HeaderConstants.CACHE_CONTROL); for (final Header header : cacheControlHeaders) { for (final HeaderElement elem : header.getElements()) { for (final String param : params) { if (param.equalsIgnoreCase(elem.getName())) { return true; } } } } return false; }
private boolean requestProtocolGreaterThanAccepted(final HttpRequest req) { return req.getProtocolVersion().compareToVersion(HttpVersion.HTTP_1_1) > 0; }
@Override public void process( final HttpRequest request, final HttpContext context) throws HttpException, IOException { /* Signal support for Accept-Encoding transfer encodings. */ if (!request.containsHeader("Accept-Encoding")) { request.addHeader("Accept-Encoding", acceptEncoding); } }
/** * Creates a protocol version. * Called from {@link #parseProtocolVersion}. * * @param major the major version number, for example 1 in HTTP/1.0 * @param minor the minor version number, for example 0 in HTTP/1.0 * * @return the protocol version */ protected ProtocolVersion createProtocolVersion(final int major, final int minor) { return protocol.forVersion(major, minor); }
/** * Returns the {@link ProtocolVersion} from the origin * {@link cz.msebera.android.httpclient.HttpResponse}. */ public ProtocolVersion getProtocolVersion() { return this.statusLine.getProtocolVersion(); }
private static void closeConnection(final HttpClientConnection conn) { try { conn.close(); } catch (final IOException ignore) { } }
private boolean canResponseHaveBody(final HttpRequest request, final HttpResponse response) { if (request != null && "HEAD".equalsIgnoreCase(request.getRequestLine().getMethod())) { return false; } final int status = response.getStatusLine().getStatusCode(); return status >= HttpStatus.SC_OK && status != HttpStatus.SC_NO_CONTENT && status != HttpStatus.SC_NOT_MODIFIED && status != HttpStatus.SC_RESET_CONTENT; }
@Override public boolean retryRequest(final HttpResponse response, final int executionCount, final HttpContext context) { return executionCount <= maxRetries && response.getStatusLine().getStatusCode() == HttpStatus.SC_SERVICE_UNAVAILABLE; }
protected boolean requestVersionIsTooLow(final HttpRequest request) { return request.getProtocolVersion().compareToVersion(HttpVersion.HTTP_1_1) < 0; }
@Override public boolean shouldBackoff(final HttpResponse resp) { return (resp.getStatusLine().getStatusCode() == HttpStatus.SC_SERVICE_UNAVAILABLE); }