# DefaultHttpDataSource.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/DefaultHttpDataSource.java+class:androidx.media3.datasource.DefaultHttpDataSource.Factory)

*** ** * ** ***


```
public final class DefaultHttpDataSource.Factory implements HttpDataSource.Factory
```

<br />

*** ** * ** ***

`https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource` instances.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.Factory#Factory()()` Creates an instance. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.Factory#createDataSource()()` Creates a `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instance. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.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/DefaultHttpDataSource.Factory#setAllowCrossProtocolRedirects(boolean)(boolean allowCrossProtocolRedirects)` Sets whether to allow cross protocol redirects. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.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/DefaultHttpDataSource.Factory#setConnectTimeoutMs(int)(int connectTimeoutMs)` Sets the connect timeout, in milliseconds. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.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/DefaultHttpDataSource.Factory#setContentTypePredicate(com.google.common.base.Predicate<java.lang.String>)( @https://developer.android.com/reference/androidx/annotation/Nullable https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Predicate.html<https://developer.android.com/reference/java/lang/String.html> contentTypePredicate )` Sets a content type `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Predicate.html`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.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/DefaultHttpDataSource.Factory#setCrossProtocolRedirectsForceOriginal(boolean)( boolean crossProtocolRedirectsForceOriginal )` Sets whether cross protocol redirects should be forced to follow original protocol. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.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/DefaultHttpDataSource.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. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.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/DefaultHttpDataSource.Factory#setKeepPostFor302Redirects(boolean)(boolean keepPostFor302Redirects)` Sets whether we should keep the POST method and body when we have HTTP 302 redirects for a POST request. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.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/DefaultHttpDataSource.Factory#setReadTimeoutMs(int)(int readTimeoutMs)` Sets the read timeout, in milliseconds. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.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/DefaultHttpDataSource.Factory#setTransferListener(androidx.media3.datasource.TransferListener)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/TransferListener transferListener)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/TransferListener` that will be used. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.Factory#setUserAgent(java.lang.String)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html userAgent)` Sets the user agent that will be used. |

### Inherited methods

From [androidx.media3.datasource.DataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory) `abstract https://developer.android.com/reference/androidx/media3/datasource/DataSource` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory#createDataSource()()`

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

## Public constructors

### Factory

```
public Factory()
```

Creates an instance.

## Public methods

### createDataSource

```
@UnstableApi
public DefaultHttpDataSource createDataSource()
```

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

### setAllowCrossProtocolRedirects

```
@CanIgnoreReturnValue
@UnstableApi
public DefaultHttpDataSource.Factory setAllowCrossProtocolRedirects(boolean allowCrossProtocolRedirects)
```

Sets whether to allow cross protocol redirects.

The default is `false`.

| Parameters |
|---|---|
| `boolean allowCrossProtocolRedirects` | Whether to allow cross protocol redirects. |

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

### setConnectTimeoutMs

```
@CanIgnoreReturnValue
@UnstableApi
public DefaultHttpDataSource.Factory setConnectTimeoutMs(int connectTimeoutMs)
```

Sets the connect timeout, in milliseconds.

The default is `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource#DEFAULT_CONNECT_TIMEOUT_MILLIS()`.

| Parameters |
|---|---|
| `int connectTimeoutMs` | The connect timeout, in milliseconds, that will be used. |

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

### setContentTypePredicate

```
@CanIgnoreReturnValue
@UnstableApi
public DefaultHttpDataSource.Factory setContentTypePredicate(
    @Nullable Predicate<String> contentTypePredicate
)
```

Sets a content type `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Predicate.html`. If a content type is rejected by the predicate then a `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.InvalidContentTypeException` is thrown from `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource#open(androidx.media3.datasource.DataSpec)`.

The default is `null`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Predicate.html<https://developer.android.com/reference/java/lang/String.html> contentTypePredicate` | The content type `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Predicate.html`, or `null` to clear a predicate that was previously set. |

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

### setCrossProtocolRedirectsForceOriginal

```
@CanIgnoreReturnValue
@UnstableApi
public DefaultHttpDataSource.Factory setCrossProtocolRedirectsForceOriginal(
    boolean crossProtocolRedirectsForceOriginal
)
```

Sets whether cross protocol redirects should be forced to follow original protocol. This should only be set if `allowCrossProtocolRedirects` is false.

The default is `false`.

| Parameters |
|---|---|
| `boolean crossProtocolRedirectsForceOriginal` | Whether to force original protocol. |

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

### setDefaultRequestProperties

```
@CanIgnoreReturnValue
@UnstableApi
public DefaultHttpDataSource.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/DefaultHttpDataSource.Factory` | This factory. |

### setKeepPostFor302Redirects

```
@CanIgnoreReturnValue
@UnstableApi
public DefaultHttpDataSource.Factory setKeepPostFor302Redirects(boolean keepPostFor302Redirects)
```

Sets whether we should keep the POST method and body when we have HTTP 302 redirects for a POST request.

### setReadTimeoutMs

```
@CanIgnoreReturnValue
@UnstableApi
public DefaultHttpDataSource.Factory setReadTimeoutMs(int readTimeoutMs)
```

Sets the read timeout, in milliseconds.

The default is `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource#DEFAULT_READ_TIMEOUT_MILLIS()`.

| Parameters |
|---|---|
| `int readTimeoutMs` | The connect timeout, in milliseconds, that will be used. |

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

### setTransferListener

```
@CanIgnoreReturnValue
@UnstableApi
public DefaultHttpDataSource.Factory setTransferListener(@Nullable TransferListener transferListener)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/TransferListener` that will be used.

The default is `null`.

See `https://developer.android.com/reference/androidx/media3/datasource/DataSource#addTransferListener(androidx.media3.datasource.TransferListener)`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/TransferListener transferListener` | The listener that will be used. |

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

### setUserAgent

```
@CanIgnoreReturnValue
public DefaultHttpDataSource.Factory setUserAgent(@Nullable String userAgent)
```

Sets the user agent that will be used.

The default is `null`, which causes the default user agent of the underlying platform to be used.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html userAgent` | The user agent that will be used, or `null` to use the default user agent of the underlying platform. |

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