# HttpDataSource.Factory

Artifact: [androidx.media3:media3-datasource](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/datasource/HttpDataSource.java+class:androidx.media3.datasource.HttpDataSource.Factory)

*** ** * ** ***


```
public interface HttpDataSource.Factory extends DataSource.Factory
```

<br />

Known direct subclasses [CronetDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/cronet/CronetDataSource.Factory), [DefaultHttpDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.Factory), [HttpDataSource.BaseFactory](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.BaseFactory), [HttpEngineDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/HttpEngineDataSource.Factory), [KtorDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/ktor/KtorDataSource.Factory), [OkHttpDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/okhttp/OkHttpDataSource.Factory)

|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cronet/CronetDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/cronet/CronetDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.BaseFactory` | Base implementation of `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.Factory` that sets default request properties. |
| `https://developer.android.com/reference/androidx/media3/datasource/HttpEngineDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/HttpEngineDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/ktor/KtorDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/ktor/KtorDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/okhttp/OkHttpDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/okhttp/OkHttpDataSource` instances. |

*** ** * ** ***

A factory for `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource` instances.

## Summary

| ### Public methods |
|---|---|
| `abstract https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.Factory#createDataSource()()` Creates a `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instance. |
| `abstract https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html @https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.Factory#setDefaultRequestProperties(java.util.Map<java.lang.String,java.lang.String>)( https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/lang/String.html> defaultRequestProperties )` Sets the default request headers for `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource` instances created by the factory. |

## Public methods

### createDataSource

```
@UnstableApi
abstract HttpDataSource createDataSource()
```

Creates a `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instance.

### setDefaultRequestProperties

```
@CanIgnoreReturnValue
@UnstableApi
abstract HttpDataSource.Factory setDefaultRequestProperties(
    Map<String, String> defaultRequestProperties
)
```

Sets the default request headers for `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource` instances created by the factory.

The new request properties will be used for future requests made by `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource` created by the factory, including instances that have already been created. Modifying the `defaultRequestProperties` map after a call to this method will have no effect, and so it's necessary to call this method again each time the request properties need to be updated.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/lang/String.html> defaultRequestProperties` | The default request properties. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.Factory` | This factory. |