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.
| Field Value | |
|---|---|
| Type | Description |
int |
|
Constructors
MediaHttpDownloader(HttpTransport transport, HttpRequestInitializer httpRequestInitializer)
public MediaHttpDownloader(HttpTransport transport, HttpRequestInitializer httpRequestInitializer)Construct the MediaHttpDownloader.
| Parameters | |
|---|---|
| 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.
| Parameters | |
|---|---|
| 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 |
| Exceptions | |
|---|---|
| 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.
| Parameters | |
|---|---|
| Name | Description |
requestUrl |
com.google.api.client.http.GenericUrlThe request URL where the download requests will be sent |
outputStream |
OutputStreamdestination output stream |
| Exceptions | |
|---|---|
| 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.
| Returns | |
|---|---|
| Type | Description |
int |
|
getDownloadState()
public MediaHttpDownloader.DownloadState getDownloadState()Gets the current download state of the downloader.
| Returns | |
|---|---|
| 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.
| Returns | |
|---|---|
| Type | Description |
long |
the last byte position |
getNumBytesDownloaded()
public long getNumBytesDownloaded()Gets the total number of bytes downloaded by this downloader.
| Returns | |
|---|---|
| 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%).
| Returns | |
|---|---|
| Type | Description |
double |
the download progress |
getProgressListener()
public MediaHttpDownloaderProgressListener getProgressListener()Returns the progress listener to send progress notifications to or null for none.
| Returns | |
|---|---|
| Type | Description |
MediaHttpDownloaderProgressListener |
|
getTransport()
public HttpTransport getTransport()Returns the transport to use for requests.
| Returns | |
|---|---|
| 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.
| Returns | |
|---|---|
| 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.
| Parameter | |
|---|---|
| Name | Description |
bytesDownloaded |
longThe total number of bytes downloaded |
| Returns | |
|---|---|
| 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.
| Parameter | |
|---|---|
| Name | Description |
chunkSize |
int |
| Returns | |
|---|---|
| Type | Description |
MediaHttpDownloader |
|
setContentRange(long firstBytePos, int lastBytePos) (deprecated)
public MediaHttpDownloader setContentRange(long firstBytePos, int lastBytePos)Deprecated. Use #setContentRange(long, long) instead.
| Parameters | |
|---|---|
| Name | Description |
firstBytePos |
long |
lastBytePos |
int |
| Returns | |
|---|---|
| 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.
| Parameters | |
|---|---|
| Name | Description |
firstBytePos |
longThe first byte position in the content range string |
lastBytePos |
longThe last byte position in the content range string. |
| Returns | |
|---|---|
| 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.
| Parameter | |
|---|---|
| Name | Description |
directDownloadEnabled |
boolean |
| Returns | |
|---|---|
| Type | Description |
MediaHttpDownloader |
|
setProgressListener(MediaHttpDownloaderProgressListener progressListener)
public MediaHttpDownloader setProgressListener(MediaHttpDownloaderProgressListener progressListener)Sets the progress listener to send progress notifications to or null for none.
| Parameter | |
|---|---|
| Name | Description |
progressListener |
MediaHttpDownloaderProgressListener |
| Returns | |
|---|---|
| Type | Description |
MediaHttpDownloader |
|