interface HttpDataSource : DataSource

Known direct subclasses
CronetDataSource

DataSource without intermediate buffer based on Cronet API set using UrlRequest.

DefaultHttpDataSource

An HttpDataSource that uses Android's HttpURLConnection.

HttpEngineDataSource

DataSource without intermediate buffer based on HttpEngine set using UrlRequest.

OkHttpDataSource

An HttpDataSource that delegates to Square's Call.Factory.


An HTTP DataSource.

Summary

Nested types

Base implementation of Factory that sets default request properties.

Thrown when cleartext HTTP traffic is not permitted.

A factory for HttpDataSource instances.

Thrown when an error is encountered when trying to read from a HttpDataSource.

@Documented
@Retention(value = RetentionPolicy.SOURCE)
@Target(value = TYPE_USE)
@IntDef(value = )
annotation HttpDataSource.HttpDataSourceException.Type

The type of operation that produced the error.

Thrown when the content type is invalid.

Thrown when an attempt to open a connection results in a response code not in the 2xx range.

Stores HTTP request properties (aka HTTP headers) and provides methods to modify the headers in a thread safe way to avoid the potential of creating snapshots of an inconsistent or unintended state.

Constants

const Predicate<String!>!

A Predicate that rejects content types often used for pay-walls.

Public functions

Unit

Clears all request headers that were set by setRequestProperty.

Unit

Clears the value of a request header.

Unit

Closes the source.

Int

When the source is open, returns the HTTP response status code associated with the last open call.

(Mutable)Map<String!, (Mutable)List<String!>!>!

When the source is open, returns the response headers associated with the last open call.

Long

Opens the source to read the specified data.

Int
@UnstableApi
read(buffer: ByteArray!, offset: Int, length: Int)

Reads up to length bytes of data from the input.

Unit

Sets the value of a request header.

Inherited functions

From androidx.media3.datasource.DataSource
Unit

Adds a TransferListener to listen to data transfers.

Uri?

When the source is open, returns the Uri from which data is being read.

Constants

REJECT_PAYWALL_TYPES

@UnstableApi
const val REJECT_PAYWALL_TYPESPredicate<String!>!

A Predicate that rejects content types often used for pay-walls.

Public functions

clearAllRequestProperties

@UnstableApi
fun clearAllRequestProperties(): Unit

Clears all request headers that were set by setRequestProperty.

clearRequestProperty

@UnstableApi
fun clearRequestProperty(name: String!): Unit

Clears the value of a request header. The change will apply to subsequent connections established by the source.

Parameters
name: String!

The name of the header field.

close

@UnstableApi
fun close(): Unit

Closes the source. This method must be called even if the corresponding call to open threw an IOException.

getResponseCode

@UnstableApi
fun getResponseCode(): Int

When the source is open, returns the HTTP response status code associated with the last open call. Otherwise, returns a negative value.

getResponseHeaders

@UnstableApi
fun getResponseHeaders(): (Mutable)Map<String!, (Mutable)List<String!>!>!

When the source is open, returns the response headers associated with the last open call. Otherwise, returns an empty map.

Key look-up in the returned map is case-insensitive.

open

@UnstableApi
fun open(dataSpec: DataSpec!): Long

Opens the source to read the specified data.

Note: HttpDataSource implementations are advised to set request headers passed via (in order of decreasing priority) the dataSpec, setRequestProperty and the default parameters set in the Factory.

read

@UnstableApi
fun read(buffer: ByteArray!, offset: Int, length: Int): Int

Reads up to length bytes of data from the input.

If readLength is zero then 0 is returned. Otherwise, if no data is available because the end of the opened range has been reached, then RESULT_END_OF_INPUT is returned. Otherwise, the call will block until at least one byte of data has been read and the number of bytes read is returned.

Parameters
buffer: ByteArray!

A target array into which data should be written.

offset: Int

The offset into the target array at which to write.

length: Int

The maximum number of bytes to read from the input.

Returns
Int

The number of bytes read, or RESULT_END_OF_INPUT if the input has ended. This may be less than length because the end of the input (or available data) was reached, the method was interrupted, or the operation was aborted early for another reason.

setRequestProperty

@UnstableApi
fun setRequestProperty(name: String!, value: String!): Unit

Sets the value of a request header. The value will be used for subsequent connections established by the source.

Note: If the same header is set as a default parameter in the Factory, then the header value set with this method should be preferred when connecting with the data source. See open.

Parameters
name: String!

The name of the header field.

value: String!

The value of the field.