// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.net; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.ReadableByteChannel; /** * HTTP request (GET or POST). */ public interface HttpUrlRequest { public static final int REQUEST_PRIORITY_IDLE = 0; public static final int REQUEST_PRIORITY_LOWEST = 1; public static final int REQUEST_PRIORITY_LOW = 2; public static final int REQUEST_PRIORITY_MEDIUM = 3; public static final int REQUEST_PRIORITY_HIGHEST = 4; /** * Returns the URL associated with this request. */ String getUrl(); /** * Requests a range starting at the given offset to the end of the resource. * The server may or may not honor the offset request. The client must check * the HTTP status code before processing the response. */ void setOffset(long offset); /** * Limits the size of the download. * * @param limit Maximum size of the downloaded response (post gzip) * @param cancelEarly If true, cancel the download as soon as the size of * the response is known. If false, download {@code responseSize} * bytes and then cancel. */ void setContentLengthLimit(long limit, boolean cancelEarly); /** * Sets data to upload as part of a POST request. * * @param contentType MIME type of the post content or null if this is not a * POST. * @param data The content that needs to be uploaded if this is a POST * request. */ void setUploadData(String contentType, byte[] data); /** * Sets a readable byte channel to upload as part of a POST request. * * @param contentType MIME type of the post content or null if this is not a * POST. * @param channel The channel to read to read upload data from if this is a * POST request. */ void setUploadChannel(String contentType, ReadableByteChannel channel); /** * Start executing the request. * <p> * If this is a streaming upload request using a ReadableByteChannel, the * call will block while the request is uploaded. */ void start(); /** * Cancel the request in progress. */ void cancel(); /** * Returns {@code true} if the request has been canceled. */ boolean isCanceled(); /** * Returns the entire response as a ByteBuffer. */ ByteBuffer getByteBuffer(); /** * Returns the entire response as a byte array. */ byte[] getResponseAsBytes(); /** * Returns the expected content length. It is not guaranteed to be correct * and may be -1 if the content length is unknown. */ long getContentLength(); /** * Returns the content MIME type if known or {@code null} otherwise. */ String getContentType(); /** * Returns the HTTP status code. It may be 0 if the request has not started * or failed before getting the status code from the server. If the status * code is 206 (partial response) after {@link #setOffset} is called, the * method returns 200. */ int getHttpStatusCode(); /** * Returns the exception that occurred while executing the request of null * if the request was successful. */ IOException getException(); }