public final class MediaHttpDownloaderMedia HTTP Downloader, with support for both direct and resumable media downloads. Documentation is available here.
Implementation is not thread-safe.
Back-off is disabled by default. To enable it for an abnormal HTTP response and an I/O exception you should call HttpRequest#setUnsuccessfulResponseHandler with a new HttpBackOffUnsuccessfulResponseHandler instance and HttpRequest#setIOExceptionHandler with HttpBackOffIOExceptionHandler.
Upgrade warning: in prior version 1.14 exponential back-off was enabled by default for an abnormal HTTP response. Starting with version 1.15 it's disabled by default.
Static Fields
MAXIMUM_CHUNK_SIZE
public static final int MAXIMUM_CHUNK_SIZEDefault maximum number of bytes that will be downloaded from the server in any single HTTP request. Set to 32MB because that is the maximum App Engine request size.
| Type | Description |
| int |
Constructors
MediaHttpDownloader(HttpTransport transport, HttpRequestInitializer httpRequestInitializer)
public MediaHttpDownloader(HttpTransport transport, HttpRequestInitializer httpRequestInitializer)Construct the MediaHttpDownloader.
| Name | Description |
| transport | com.google.api.client.http.HttpTransportThe transport to use for requests |
| httpRequestInitializer | com.google.api.client.http.HttpRequestInitializerThe initializer to use when creating an HttpRequest or
|
Methods
download(GenericUrl requestUrl, HttpHeaders requestHeaders, OutputStream outputStream)
public void download(GenericUrl requestUrl, HttpHeaders requestHeaders, OutputStream outputStream)Executes a direct media download or a resumable media download.
This method does not close the given output stream.
This method is not reentrant. A new instance of MediaHttpDownloader must be instantiated before download called be called again.
| Name | Description |
| requestUrl | com.google.api.client.http.GenericUrlrequest URL where the download requests will be sent |
| requestHeaders | com.google.api.client.http.HttpHeadersrequest headers or |
| outputStream | OutputStreamdestination output stream |
| Type | Description |
| IOException |
download(GenericUrl requestUrl, OutputStream outputStream)
public void download(GenericUrl requestUrl, OutputStream outputStream)Executes a direct media download or a resumable media download.
This method does not close the given output stream.
This method is not reentrant. A new instance of MediaHttpDownloader must be instantiated before download called be called again.
| Name | Description |
| requestUrl | com.google.api.client.http.GenericUrlThe request URL where the download requests will be sent |
| outputStream | OutputStreamdestination output stream |
| Type | Description |
| IOException |
getChunkSize()
public int getChunkSize()Returns the maximum size of individual chunks that will get downloaded by single HTTP requests. The default value is #MAXIMUM_CHUNK_SIZE.
| Type | Description |
| int |
getDownloadState()
public MediaHttpDownloader.DownloadState getDownloadState()Gets the current download state of the downloader.
| Type | Description |
| MediaHttpDownloader.DownloadState | the download state |
getLastBytePosition()
public long getLastBytePosition()Gets the last byte position of the media file we want to download or -1 if there is no
upper limit on the byte position.
| Type | Description |
| long | the last byte position |
getNumBytesDownloaded()
public long getNumBytesDownloaded()Gets the total number of bytes downloaded by this downloader.
| Type | Description |
| long | the number of bytes downloaded |
getProgress()
public double getProgress()Gets the download progress denoting the percentage of bytes that have been downloaded, represented between 0.0 (0%) and 1.0 (100%).
| Type | Description |
| double | the download progress |
getProgressListener()
public MediaHttpDownloaderProgressListener getProgressListener()Returns the progress listener to send progress notifications to or null for none.
| Type | Description |
| MediaHttpDownloaderProgressListener |
getTransport()
public HttpTransport getTransport()Returns the transport to use for requests.
| Type | Description |
| com.google.api.client.http.HttpTransport |
isDirectDownloadEnabled()
public boolean isDirectDownloadEnabled()Returns whether direct media download is enabled or disabled. If value is set to true
then a direct download will be done where the whole media content is downloaded in a single
request. If value is set to false then the download uses the resumable media download
protocol to download in data chunks. Defaults to false.
| Type | Description |
| boolean |
setBytesDownloaded(long bytesDownloaded)
public MediaHttpDownloader setBytesDownloaded(long bytesDownloaded)Sets the total number of bytes that have been downloaded of the media resource.
If a download was aborted mid-way due to a connection failure then users can resume the download from the point where it left off.
Use #setContentRange if you need to specify both the bytes downloaded and the last byte position.
| Name | Description |
| bytesDownloaded | longThe total number of bytes downloaded |
| Type | Description |
| MediaHttpDownloader |
setChunkSize(int chunkSize)
public MediaHttpDownloader setChunkSize(int chunkSize)Sets the maximum size of individual chunks that will get downloaded by single HTTP requests. The default value is #MAXIMUM_CHUNK_SIZE.
The maximum allowable value is #MAXIMUM_CHUNK_SIZE.
| Name | Description |
| chunkSize | int |
| Type | Description |
| MediaHttpDownloader |
setContentRange(long firstBytePos, int lastBytePos) (deprecated)
public MediaHttpDownloader setContentRange(long firstBytePos, int lastBytePos)Deprecated. Use #setContentRange(long, long) instead.
| Name | Description |
| firstBytePos | long |
| lastBytePos | int |
| Type | Description |
| MediaHttpDownloader |
setContentRange(long firstBytePos, long lastBytePos)
public MediaHttpDownloader setContentRange(long firstBytePos, long lastBytePos)Sets the content range of the next download request. Eg: bytes=firstBytePos-lastBytePos.
If a download was aborted mid-way due to a connection failure then users can resume the download from the point where it left off.
Use #setBytesDownloaded if you only need to specify the first byte position.
| Name | Description |
| firstBytePos | longThe first byte position in the content range string |
| lastBytePos | longThe last byte position in the content range string. |
| Type | Description |
| MediaHttpDownloader |
setDirectDownloadEnabled(boolean directDownloadEnabled)
public MediaHttpDownloader setDirectDownloadEnabled(boolean directDownloadEnabled)Returns whether direct media download is enabled or disabled. If value is set to true
then a direct download will be done where the whole media content is downloaded in a single
request. If value is set to false then the download uses the resumable media download
protocol to download in data chunks. Defaults to false.
| Name | Description |
| directDownloadEnabled | boolean |
| Type | Description |
| MediaHttpDownloader |
setProgressListener(MediaHttpDownloaderProgressListener progressListener)
public MediaHttpDownloader setProgressListener(MediaHttpDownloaderProgressListener progressListener)Sets the progress listener to send progress notifications to or null for none.
| Name | Description |
| progressListener | MediaHttpDownloaderProgressListener |
| Type | Description |
| MediaHttpDownloader |