UploadDataProvider


abstract class UploadDataProvider : Closeable
kotlin.Any
   ↳ android.net.http.UploadDataProvider

Abstract class allowing the embedder to provide an upload body to UrlRequest. It supports both non-chunked (size known in advanced) and chunked (size not known in advance) uploads. Be aware that not all servers support chunked uploads.

An upload is either always chunked, across multiple uploads if the data ends up being sent more than once, or never chunked.

Summary

Public constructors

Public methods
open Unit

Called when this UploadDataProvider is no longer needed by a request, so that resources (like a file) can be explicitly released.

abstract Long

If this is a non-chunked upload, returns the length of the upload.

abstract Unit
read(uploadDataSink: UploadDataSink, byteBuffer: ByteBuffer)

Reads upload data into byteBuffer.

abstract Unit
rewind(uploadDataSink: UploadDataSink)

Rewinds upload data.

Public constructors

UploadDataProvider

UploadDataProvider()

Public methods

close

Added in API level 34
open fun close(): Unit

Called when this UploadDataProvider is no longer needed by a request, so that resources (like a file) can be explicitly released.

Exceptions
java.lang.Exception if this resource cannot be closed
java.io.IOException if any IOException occurred during the process. This will cause the request to fail if it is not yet complete; otherwise it will be logged.

getLength

abstract fun getLength(): Long

If this is a non-chunked upload, returns the length of the upload. Must always return -1 if this is a chunked upload.

Return
Long the length of the upload for non-chunked uploads, -1 otherwise.
Exceptions
java.io.IOException if any IOException occurred during the process.

read

abstract fun read(
    uploadDataSink: UploadDataSink,
    byteBuffer: ByteBuffer
): Unit

Reads upload data into byteBuffer. Upon completion, the buffer's position is updated to the end of the bytes that were read. The buffer's limit is not changed. Each call of this method must be followed be a single call, either synchronous or asynchronous, to uploadDataSink: UploadDataSink.onReadSucceeded on success or android.net.http.UploadDataSink#onReadError on failure. Neither read nor rewind will be called until one of those methods or the other is called. Even if the associated UrlRequest is canceled, one or the other must still be called before resources can be safely freed. Throwing an exception will also result in resources being freed and the request being errored out.

Parameters
uploadDataSink UploadDataSink: The object to notify when the read has completed, successfully or otherwise. This value cannot be null.
byteBuffer ByteBuffer: The buffer to copy the read bytes into. Do not change byteBuffer's limit. This value cannot be null.
Exceptions
java.io.IOException if any IOException occurred during the process. android.net.http.UrlRequest.Callback#onFailed will be called with the thrown exception set as the cause of the CallbackException.

rewind

abstract fun rewind(uploadDataSink: UploadDataSink): Unit

Rewinds upload data. Each call must be followed be a single call, either synchronous or asynchronous, to uploadDataSink: UploadDataSink.onRewindSucceeded on success or UploadDataSink.onRewindError on failure. Neither read nor rewind will be called until one of those methods or the other is called. Even if the associated UrlRequest is canceled, one or the other must still be called before resources can be safely freed. Throwing an exception will also result in resources being freed and the request being errored out.

If rewinding is not supported, this should call UploadDataSink.onRewindError. Note that rewinding is required to follow redirects that preserve the upload body, and for retrying when the server times out stale sockets.

Parameters
uploadDataSink UploadDataSink: The object to notify when the rewind operation has completed, successfully or otherwise. This value cannot be null.
Exceptions
java.io.IOException if any IOException occurred during the process. android.net.http.UrlRequest.Callback#onFailed will be called with the thrown exception set as the cause of the CallbackException.