# UrlRequest


```
public abstract class UrlRequest
```

<br />

*** ** * ** ***

Controls an HTTP request (GET, PUT, POST etc). Created by `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Builder`, which can be obtained by calling `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetEngine#newUrlRequestBuilder(java.lang.String,org.chromium.net.UrlRequest.Callback,java.util.concurrent.Executor)`. Note: All methods must be called on the `https://developer.android.com/reference/java/util/concurrent/Executor.html` passed to `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetEngine#newUrlRequestBuilder(java.lang.String,org.chromium.net.UrlRequest.Callback,java.util.concurrent.Executor)`.

## Summary

| ### Nested types |
|---|
| `public abstract class https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Builder` Builder for `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest`s. |
| `public abstract class https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback` Users of Cronet extend this class to receive callbacks indicating the progress of a `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest` being processed. |
| `@https://developer.android.com/reference/androidx/annotation/RequiresOptIn.html public annotation https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Experimental` An annotation for APIs which are not considered stable yet. |
| `public class https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Status` Request status values returned by `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#getStatus(org.chromium.net.UrlRequest.StatusListener)`. |
| `public abstract class https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.StatusListener` Listener class used with `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#getStatus(org.chromium.net.UrlRequest.StatusListener)` to receive the status of a `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest`. |

| ### Public constructors |
|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#UrlRequest()()` |

| ### Public methods |
|---|---|
| `abstract void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#cancel()()` Cancels the request. |
| `abstract void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#followRedirect()()` Follows a pending redirect. |
| `abstract void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#getStatus(org.chromium.net.UrlRequest.StatusListener)(https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.StatusListener listener)` Queries the status of the request. |
| `abstract boolean` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#isDone()()` Returns `true` if the request was successfully started and is now finished (completed, canceled, or failed). |
| `abstract void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#read(java.nio.ByteBuffer)(https://developer.android.com/reference/java/nio/ByteBuffer.html buffer)` Attempts to read part of the response body into the provided buffer. |
| `abstract void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#start()()` Starts the request, all callbacks go to `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback`. |

## Public constructors

### UrlRequest

```
public UrlRequest()
```

## Public methods

### cancel

```
public abstract void cancel()
```

Cancels the request. Can be called at any time. `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onCanceled(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo)` will be invoked when cancellation is complete and no further callback methods will be invoked. If the request has completed or has not started, calling `cancel()` has no effect and `onCanceled()` will not be invoked. If the `https://developer.android.com/reference/java/util/concurrent/Executor.html` passed in during `
UrlRequest` construction runs tasks on a single thread, and `cancel()` is called on that thread, no callback methods (besides `onCanceled()`) will be invoked after `
cancel()` is called. Otherwise, at most one callback method may be invoked after `
cancel()` has completed.

### followRedirect

```
public abstract void followRedirect()
```

Follows a pending redirect. Must only be called at most once for each invocation of `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onRedirectReceived(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo,java.lang.String)`.

### getStatus

```
public abstract void getStatus(UrlRequest.StatusListener listener)
```

Queries the status of the request.

| Parameters |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.StatusListener listener` | a `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.StatusListener` that will be invoked with the request's current status. `listener` will be invoked back on the `https://developer.android.com/reference/java/util/concurrent/Executor.html` passed in when the request was created. |

### isDone

```
public abstract boolean isDone()
```

Returns `true` if the request was successfully started and is now finished (completed, canceled, or failed).

| Returns |
|---|---|
| `boolean` | `true` if the request was successfully started and is now finished (completed, canceled, or failed). |

### read

```
public abstract void read(ByteBuffer buffer)
```

Attempts to read part of the response body into the provided buffer. Must only be called at most once in response to each invocation of the `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onResponseStarted(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo)` and `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onReadCompleted(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo,java.nio.ByteBuffer)` methods of the `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback`. Each call will result in an asynchronous call to either the `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback``https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onReadCompleted(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo,java.nio.ByteBuffer)` method if data is read, its `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onSucceeded(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo)` method if there's no more data to read, or its `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onFailed(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo,org.chromium.net.CronetException)` method if there's an error.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/nio/ByteBuffer.html buffer` | `https://developer.android.com/reference/java/nio/ByteBuffer.html` to write response body to. Must be a direct ByteBuffer. The embedder must not read or modify buffer's position, limit, or data between its position and limit until the request calls back into the `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback`. |

### start

```
public abstract void start()
```

Starts the request, all callbacks go to `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback`. May only be called once. May not be called if `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#cancel()` has been called.