# HttpUtil

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

*** ** * ** ***

<br />

```
@UnstableApi
public final class HttpUtil
```

<br />

*** ** * ** ***

Utility methods for HTTP.

## Summary

| ### Public methods |
|---|---|
| `static @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/datasource/HttpUtil#buildRangeRequestHeader(long,long)(long position, long length)` Builds a `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/net/HttpHeaders.html#RANGE` for the given position and length. |
| `static long` | `https://developer.android.com/reference/androidx/media3/datasource/HttpUtil#getContentLength(java.lang.String,java.lang.String)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html contentLengthHeader, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html contentRangeHeader )` Attempts to parse the length of a response body from the corresponding response headers. |
| `static https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/datasource/HttpUtil#getCookieHeader(java.lang.String,java.util.Map<java.lang.String,java.util.List<java.lang.String>>,java.net.CookieHandler)( https://developer.android.com/reference/java/lang/String.html url, https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/String.html>> headers, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/net/CookieHandler.html cookieHandler )` Returns the stored cookie header for the given response URL and headers. |
| `static long` | `https://developer.android.com/reference/androidx/media3/datasource/HttpUtil#getDocumentSize(java.lang.String)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html contentRangeHeader)` Attempts to parse the document size from a `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/net/HttpHeaders.html#CONTENT_RANGE`. |
| `static void` | `https://developer.android.com/reference/androidx/media3/datasource/HttpUtil#storeCookiesFromHeaders(java.lang.String,java.util.Map<java.lang.String,java.util.List<java.lang.String>>,java.net.CookieHandler)( https://developer.android.com/reference/java/lang/String.html url, https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/String.html>> headers, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/net/CookieHandler.html cookieHandler )` Stores the cookie headers from the response in the provided `https://developer.android.com/reference/java/net/CookieHandler.html`. |

## Public methods

### buildRangeRequestHeader

```
public static @Nullable String buildRangeRequestHeader(long position, long length)
```

Builds a `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/net/HttpHeaders.html#RANGE` for the given position and length.

| Parameters |
|---|---|
| `long position` | The request position. |
| `long length` | The request length, or `https://developer.android.com/reference/androidx/media3/common/C#LENGTH_UNSET()` if the request is unbounded. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html` | The corresponding range header, or `null` if a header is unnecessary because the whole resource is being requested. |

### getContentLength

```
public static long getContentLength(
    @Nullable String contentLengthHeader,
    @Nullable String contentRangeHeader
)
```

Attempts to parse the length of a response body from the corresponding response headers.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html contentLengthHeader` | The `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/net/HttpHeaders.html#CONTENT_LENGTH`, or `null` if not set. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html contentRangeHeader` | The `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/net/HttpHeaders.html#CONTENT_RANGE`, or ` null` if not set. |

| Returns |
|---|---|
| `long` | The length of the response body, or `https://developer.android.com/reference/androidx/media3/common/C#LENGTH_UNSET()` if it could not be determined. |

### getCookieHeader

```
public static String getCookieHeader(
    String url,
    Map<String, List<String>> headers,
    @Nullable CookieHandler cookieHandler
)
```

Returns the stored cookie header for the given response URL and headers.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html url` | The URL of the response. |
| `https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/String.html>> headers` | The headers of the response. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/net/CookieHandler.html cookieHandler` | The `https://developer.android.com/reference/java/net/CookieHandler.html` to store the cookies in. If null, no cookies will be available. |

| Returns |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html` | The cookie header string that can be added to requests with `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/net/HttpHeaders.html#COOKIE`. |

### getDocumentSize

```
public static long getDocumentSize(@Nullable String contentRangeHeader)
```

Attempts to parse the document size from a `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/net/HttpHeaders.html#CONTENT_RANGE`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html contentRangeHeader` | The `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/net/HttpHeaders.html#CONTENT_RANGE`, or ` null` if not set. |

| Returns |
|---|---|
| `long` | The document size, or `https://developer.android.com/reference/androidx/media3/common/C#LENGTH_UNSET()` if it could not be determined. |

### storeCookiesFromHeaders

```
public static void storeCookiesFromHeaders(
    String url,
    Map<String, List<String>> headers,
    @Nullable CookieHandler cookieHandler
)
```

Stores the cookie headers from the response in the provided `https://developer.android.com/reference/java/net/CookieHandler.html`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html url` | The URL of the response. |
| `https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/String.html>> headers` | The headers of the response. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/net/CookieHandler.html cookieHandler` | The `https://developer.android.com/reference/java/net/CookieHandler.html` to store the cookies in. If null, no cookies will be stored. |