public interface HttpDataSource extends 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 = )
public 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

default static final Predicate<String>

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

Public methods

abstract void

Clears all request headers that were set by setRequestProperty.

abstract void

Clears the value of a request header.

abstract void

Closes the source.

abstract int

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

abstract Map<StringList<String>>

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

abstract long

Opens the source to read the specified data.

abstract int
@UnstableApi
read(byte[] buffer, int offset, int length)

Reads up to length bytes of data from the input.

abstract void

Sets the value of a request header.

Inherited methods

From androidx.media3.datasource.DataSource
abstract void

Adds a TransferListener to listen to data transfers.

abstract @Nullable Uri

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

Constants

REJECT_PAYWALL_TYPES

@UnstableApi
default static final Predicate<StringREJECT_PAYWALL_TYPES

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

Public methods

clearAllRequestProperties

@UnstableApi
abstract void clearAllRequestProperties()

Clears all request headers that were set by setRequestProperty.

clearRequestProperty

@UnstableApi
abstract void clearRequestProperty(String name)

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

Parameters
String name

The name of the header field.

close

@UnstableApi
abstract void close()

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

getResponseCode

@UnstableApi
abstract int getResponseCode()

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

getResponseHeaders

@UnstableApi
abstract Map<StringList<String>> getResponseHeaders()

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
abstract long open(DataSpec dataSpec)

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
abstract int read(byte[] buffer, int offset, int length)

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
byte[] buffer

A target array into which data should be written.

int offset

The offset into the target array at which to write.

int length

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
abstract void setRequestProperty(String name, String value)

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
String name

The name of the header field.

String value

The value of the field.