# HttpDataSource.HttpDataSourceException

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.HttpDataSourceException)

*** ** * ** ***


```
public class HttpDataSource.HttpDataSourceException extends DataSourceException
```

<br />

|---|---|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) ||||||
| ↳ | [kotlin.Throwable](https://developer.android.com/reference/java/lang/Throwable.html) |||||
|   | ↳ | [java.lang.Exception](https://developer.android.com/reference/java/lang/Exception.html) ||||
|   |   | ↳ | [java.io.IOException](https://developer.android.com/reference/java/io/IOException.html) |||
|   |   |   | ↳ | [androidx.media3.datasource.DataSourceException](https://developer.android.com/reference/androidx/media3/datasource/DataSourceException) ||
|   |   |   |   | ↳ | [androidx.media3.datasource.HttpDataSource.HttpDataSourceException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException) |

Known direct subclasses [CronetDataSource.OpenException](https://developer.android.com/reference/androidx/media3/datasource/cronet/CronetDataSource.OpenException), [HttpDataSource.CleartextNotPermittedException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.CleartextNotPermittedException), [HttpDataSource.InvalidContentTypeException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.InvalidContentTypeException), [HttpDataSource.InvalidResponseCodeException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.InvalidResponseCodeException), [HttpEngineDataSource.OpenException](https://developer.android.com/reference/androidx/media3/datasource/HttpEngineDataSource.OpenException)

|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cronet/CronetDataSource.OpenException` | Thrown when an error is encountered when trying to open a `https://developer.android.com/reference/androidx/media3/datasource/cronet/CronetDataSource`. |
| `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.CleartextNotPermittedException` | Thrown when cleartext HTTP traffic is not permitted. |
| `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.InvalidContentTypeException` | Thrown when the content type is invalid. |
| `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.InvalidResponseCodeException` | Thrown when an attempt to open a connection results in a response code not in the 2xx range. |
| `https://developer.android.com/reference/androidx/media3/datasource/HttpEngineDataSource.OpenException` | Thrown when an error is encountered when trying to open a `https://developer.android.com/reference/androidx/media3/datasource/HttpEngineDataSource`. |

*** ** * ** ***

Thrown when an error is encountered when trying to read from a `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource`.

## Summary

| ### Nested types |
|---|
| `@https://developer.android.com/reference/java/lang/annotation/Documented.html @https://developer.android.com/reference/java/lang/annotation/Retention.html(value = https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html#SOURCE) @https://developer.android.com/reference/java/lang/annotation/Target.html(value = https://developer.android.com/reference/java/lang/annotation/ElementType.html#TYPE_USE) @https://developer.android.com/reference/androidx/annotation/IntDef(value = ) public annotation https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type` The type of operation that produced the error. |

| ### Constants |
|---|---|
| `static final int` | `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#TYPE_CLOSE() = 3` The error occurred in closing a `HttpDataSource`. |
| `static final int` | `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#TYPE_OPEN() = 1` The error occurred reading data from a `HttpDataSource`. |
| `static final int` | `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#TYPE_READ() = 2` The error occurred in opening a `HttpDataSource`. |

| ### Public fields |
|---|---|
| `final https://developer.android.com/reference/androidx/media3/datasource/DataSpec` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#dataSpec()` The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` associated with the current connection. |
| `final int` | `@https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#type()` |

| ### Public constructors |
|---|
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi [HttpDataSourceException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(androidx.media3.datasource.DataSpec,int))( https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec, @https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(androidx.media3.datasource.DataSpec,int,int)`. <br /> |
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi [HttpDataSourceException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.io.IOException,androidx.media3.datasource.DataSpec,int))( https://developer.android.com/reference/java/io/IOException.html cause, https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec, @https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.io.IOException,androidx.media3.datasource.DataSpec,int,int)`. <br /> |
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(androidx.media3.datasource.DataSpec,int,int)( https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec, @https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode, @https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type )` Constructs an HttpDataSourceException. |
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi [HttpDataSourceException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.lang.String,androidx.media3.datasource.DataSpec,int))( https://developer.android.com/reference/java/lang/String.html message, https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec, @https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.lang.String,androidx.media3.datasource.DataSpec,int,int)`. <br /> |
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.io.IOException,androidx.media3.datasource.DataSpec,int,int)( https://developer.android.com/reference/java/io/IOException.html cause, https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec, @https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode, @https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type )` Constructs an HttpDataSourceException. |
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi [HttpDataSourceException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.lang.String,java.io.IOException,androidx.media3.datasource.DataSpec,int))( https://developer.android.com/reference/java/lang/String.html message, https://developer.android.com/reference/java/io/IOException.html cause, https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec, @https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.lang.String,java.io.IOException,androidx.media3.datasource.DataSpec,int,int)`. <br /> |
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.lang.String,androidx.media3.datasource.DataSpec,int,int)( https://developer.android.com/reference/java/lang/String.html message, https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec, @https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode, @https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type )` Constructs an HttpDataSourceException. |
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.lang.String,java.io.IOException,androidx.media3.datasource.DataSpec,int,int)( https://developer.android.com/reference/java/lang/String.html message, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/io/IOException.html cause, https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec, @https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode, @https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type )` Constructs an HttpDataSourceException. |

| ### Public methods |
|---|---|
| `static https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#createForIOException(java.io.IOException,androidx.media3.datasource.DataSpec,int)( https://developer.android.com/reference/java/io/IOException.html cause, https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec, @https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type )` Returns a `HttpDataSourceException` whose error code is assigned according to the cause and type. |

### Inherited Constants

From [androidx.media3.datasource.DataSourceException](https://developer.android.com/reference/androidx/media3/datasource/DataSourceException) `static final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/datasource/DataSourceException#POSITION_OUT_OF_RANGE() = 2008`

**This field is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE()`.

<br />

### Inherited fields

From [androidx.media3.datasource.DataSourceException](https://developer.android.com/reference/androidx/media3/datasource/DataSourceException) `final int` `@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode
https://developer.android.com/reference/androidx/media3/datasource/DataSourceException#reason()`

The reason of this `https://developer.android.com/reference/androidx/media3/datasource/DataSourceException`, should be one of the `ERROR_CODE_IO_*` in `https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode`.

### Inherited methods

From [androidx.media3.datasource.DataSourceException](https://developer.android.com/reference/androidx/media3/datasource/DataSourceException) `static boolean` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/datasource/DataSourceException#isCausedByPositionOutOfRange(java.io.IOException)(https://developer.android.com/reference/java/io/IOException.html e)`

Returns whether the given `https://developer.android.com/reference/java/io/IOException.html` was caused by a `https://developer.android.com/reference/androidx/media3/datasource/DataSourceException` whose `https://developer.android.com/reference/androidx/media3/datasource/DataSourceException#reason()` is `https://developer.android.com/reference/androidx/media3/common/PlaybackException#ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE()` in its cause stack.
From [java.lang.Throwable](https://developer.android.com/reference/java/lang/Throwable.html) `synchronized final void` `https://developer.android.com/reference/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)(https://developer.android.com/reference/java/lang/Throwable.html exception)` `synchronized https://developer.android.com/reference/java/lang/Throwable.html` `https://developer.android.com/reference/java/lang/Throwable.html#fillInStackTrace()()` `synchronized https://developer.android.com/reference/java/lang/Throwable.html` `https://developer.android.com/reference/java/lang/Throwable.html#getCause()()` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/java/lang/Throwable.html#getLocalizedMessage()()` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/java/lang/Throwable.html#getMessage()()` `StackTraceElement[]` `https://developer.android.com/reference/java/lang/Throwable.html#getStackTrace()()` `synchronized final Throwable[]` `https://developer.android.com/reference/java/lang/Throwable.html#getSuppressed()()` `synchronized https://developer.android.com/reference/java/lang/Throwable.html` `https://developer.android.com/reference/java/lang/Throwable.html#initCause(java.lang.Throwable)(https://developer.android.com/reference/java/lang/Throwable.html cause)` `void` `https://developer.android.com/reference/java/lang/Throwable.html#printStackTrace()()` `void` `https://developer.android.com/reference/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])(StackTraceElement[] stackTrace)` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/java/lang/Throwable.html#toString()()`

## Constants

### TYPE_CLOSE

```
public static final int TYPE_CLOSE = 3
```

The error occurred in closing a `HttpDataSource`.

### TYPE_OPEN

```
public static final int TYPE_OPEN = 1
```

The error occurred reading data from a `HttpDataSource`.

### TYPE_READ

```
public static final int TYPE_READ = 2
```

The error occurred in opening a `HttpDataSource`.

## Public fields

### dataSpec

```
@UnstableApi
public final DataSpec dataSpec
```

The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` associated with the current connection.

### type

```
@HttpDataSource.HttpDataSourceException.Type
public final int type
```

## Public constructors

### HttpDataSourceException

```
@UnstableApi
public [HttpDataSourceException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(androidx.media3.datasource.DataSpec,int))(
    DataSpec dataSpec,
    @HttpDataSource.HttpDataSourceException.Type int type
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(androidx.media3.datasource.DataSpec,int,int)`.

### HttpDataSourceException

```
@UnstableApi
public [HttpDataSourceException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.io.IOException,androidx.media3.datasource.DataSpec,int))(
    IOException cause,
    DataSpec dataSpec,
    @HttpDataSource.HttpDataSourceException.Type int type
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.io.IOException,androidx.media3.datasource.DataSpec,int,int)`.

### HttpDataSourceException

```
@UnstableApi
public HttpDataSourceException(
    DataSpec dataSpec,
    @PlaybackException.ErrorCode int errorCode,
    @HttpDataSource.HttpDataSourceException.Type int type
)
```

Constructs an HttpDataSourceException.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec`. |
| `@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode` | Reason of the error, should be one of the `ERROR_CODE_IO_*` in `https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode`. |
| `@https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type` | See `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type`. |

### HttpDataSourceException

```
@UnstableApi
public [HttpDataSourceException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.lang.String,androidx.media3.datasource.DataSpec,int))(
    String message,
    DataSpec dataSpec,
    @HttpDataSource.HttpDataSourceException.Type int type
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.lang.String,androidx.media3.datasource.DataSpec,int,int)`.

### HttpDataSourceException

```
@UnstableApi
public HttpDataSourceException(
    IOException cause,
    DataSpec dataSpec,
    @PlaybackException.ErrorCode int errorCode,
    @HttpDataSource.HttpDataSourceException.Type int type
)
```

Constructs an HttpDataSourceException.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/io/IOException.html cause` | The error cause. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec`. |
| `@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode` | Reason of the error, should be one of the `ERROR_CODE_IO_*` in `https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode`. |
| `@https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type` | See `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type`. |

### HttpDataSourceException

```
@UnstableApi
public [HttpDataSourceException](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.lang.String,java.io.IOException,androidx.media3.datasource.DataSpec,int))(
    String message,
    IOException cause,
    DataSpec dataSpec,
    @HttpDataSource.HttpDataSourceException.Type int type
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException#HttpDataSourceException(java.lang.String,java.io.IOException,androidx.media3.datasource.DataSpec,int,int)`.

### HttpDataSourceException

```
@UnstableApi
public HttpDataSourceException(
    String message,
    DataSpec dataSpec,
    @PlaybackException.ErrorCode int errorCode,
    @HttpDataSource.HttpDataSourceException.Type int type
)
```

Constructs an HttpDataSourceException.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html message` | The error message. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec`. |
| `@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode` | Reason of the error, should be one of the `ERROR_CODE_IO_*` in `https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode`. |
| `@https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type` | See `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type`. |

### HttpDataSourceException

```
@UnstableApi
public HttpDataSourceException(
    String message,
    @Nullable IOException cause,
    DataSpec dataSpec,
    @PlaybackException.ErrorCode int errorCode,
    @HttpDataSource.HttpDataSourceException.Type int type
)
```

Constructs an HttpDataSourceException.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html message` | The error message. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/io/IOException.html cause` | The error cause. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec`. |
| `@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode` | Reason of the error, should be one of the `ERROR_CODE_IO_*` in `https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode`. |
| `@https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type int type` | See `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type`. |

## Public methods

### createForIOException

```
@UnstableApi
public static HttpDataSource.HttpDataSourceException createForIOException(
    IOException cause,
    DataSpec dataSpec,
    @HttpDataSource.HttpDataSourceException.Type int type
)
```

Returns a `HttpDataSourceException` whose error code is assigned according to the cause and type.