# HttpMediaDrmCallback

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

*** ** * ** ***


```
@UnstableApi
public final class HttpMediaDrmCallback implements MediaDrmCallback
```

<br />

*** ** * ** ***

A `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback` that makes requests using `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instances.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback#HttpMediaDrmCallback(java.lang.String,androidx.media3.datasource.DataSource.Factory)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html defaultLicenseUrl, https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory dataSourceFactory )` Constructs an instance. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback#HttpMediaDrmCallback(java.lang.String,boolean,androidx.media3.datasource.DataSource.Factory)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html defaultLicenseUrl, boolean forceDefaultLicenseUrl, https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory dataSourceFactory )` Constructs an instance. |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback#clearAllKeyRequestProperties()()` Clears all headers for key requests made by the callback. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback#clearKeyRequestProperty(java.lang.String)(https://developer.android.com/reference/java/lang/String.html name)` Clears a header for key requests made by the callback. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback#executeKeyRequest(java.util.UUID,androidx.media3.exoplayer.drm.ExoMediaDrm.KeyRequest)(https://developer.android.com/reference/java/util/UUID.html uuid, https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.KeyRequest request)` Executes a key request. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback#executeProvisionRequest(java.util.UUID,androidx.media3.exoplayer.drm.ExoMediaDrm.ProvisionRequest)( https://developer.android.com/reference/java/util/UUID.html uuid, https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.ProvisionRequest request )` Executes a provisioning request. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback#setKeyRequestProperty(java.lang.String,java.lang.String)(https://developer.android.com/reference/java/lang/String.html name, https://developer.android.com/reference/java/lang/String.html value)` Sets a header for key requests made by the callback. |

## Public constructors

### HttpMediaDrmCallback

```
public HttpMediaDrmCallback(
    @Nullable String defaultLicenseUrl,
    DataSource.Factory dataSourceFactory
)
```

Constructs an instance.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html defaultLicenseUrl` | The default license URL. Used for key requests that do not specify their own license URL. May be `null` if it's known that all key requests will specify their own URLs. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory dataSourceFactory` | A factory from which to obtain `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instances. This will usually be an HTTP-based `https://developer.android.com/reference/androidx/media3/datasource/DataSource`. |

### HttpMediaDrmCallback

```
public HttpMediaDrmCallback(
    @Nullable String defaultLicenseUrl,
    boolean forceDefaultLicenseUrl,
    DataSource.Factory dataSourceFactory
)
```

Constructs an instance.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html defaultLicenseUrl` | The default license URL. Used for key requests that do not specify their own license URL, or for all key requests if `forceDefaultLicenseUrl` is set to true. May be `null` if `forceDefaultLicenseUrl` is `false` and if it's known that all key requests will specify their own URLs. |
| `boolean forceDefaultLicenseUrl` | Whether to force use of `defaultLicenseUrl` for key requests that include their own license URL. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory dataSourceFactory` | A factory from which to obtain `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instances. This will \* usually be an HTTP-based `https://developer.android.com/reference/androidx/media3/datasource/DataSource`. |

## Public methods

### clearAllKeyRequestProperties

```
public void clearAllKeyRequestProperties()
```

Clears all headers for key requests made by the callback.

### clearKeyRequestProperty

```
public void clearKeyRequestProperty(String name)
```

Clears a header for key requests made by the callback.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html name` | The name of the header field. |

### executeKeyRequest

```
public MediaDrmCallback.Response executeKeyRequest(UUID uuid, ExoMediaDrm.KeyRequest request)
```

Executes a key request.

The `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo` returned inside the `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` will have the following fields unset, and they must be updated by caller before the `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo` is used elsewhere:

- `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo#loadTaskId()`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo#loadDurationMs()`

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/util/UUID.html uuid` | The UUID of the content protection scheme. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.KeyRequest request` | The request. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` | The response data. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallbackException` | If an error occurred executing the request. |

### executeProvisionRequest

```
public MediaDrmCallback.Response executeProvisionRequest(
    UUID uuid,
    ExoMediaDrm.ProvisionRequest request
)
```

Executes a provisioning request.

The `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo` returned inside the `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` will have the following fields unset, and they must be updated by caller before the `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo` is used elsewhere:

- `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo#loadTaskId()`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo#loadDurationMs()`

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/util/UUID.html uuid` | The UUID of the content protection scheme. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.ProvisionRequest request` | The request. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` | The response data. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallbackException` | If an error occurred executing the request. |

### setKeyRequestProperty

```
public void setKeyRequestProperty(String name, String value)
```

Sets a header for key requests made by the callback.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html name` | The name of the header field. |
| `https://developer.android.com/reference/java/lang/String.html value` | The value of the field. |