# ByteArrayCronetCallback


```
public abstract class ByteArrayCronetCallback extends InMemoryTransformCronetCallback
```

<br />

|---|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||||
| ↳ | [org.chromium.net.UrlRequest.Callback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback) ||||
|   | ↳ | [org.chromium.net.apihelpers.ImplicitFlowControlCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback) |||
|   |   | ↳ | [org.chromium.net.apihelpers.InMemoryTransformCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback) ||
|   |   |   | ↳ | [org.chromium.net.apihelpers.ByteArrayCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ByteArrayCronetCallback) |

*** ** * ** ***

A specialization of `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback` which returns the body bytes verbatim without any interpretation.

## Summary

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

| ### Public methods |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ByteArrayCronetCallback` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ByteArrayCronetCallback#addCompletionListener(org.chromium.net.apihelpers.CronetRequestCompletionListener<? super byte[]>)( https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/CronetRequestCompletionListener<byte[]> listener )` Adds a completion listener. |

| ### Protected methods |
|---|---|
| `final byte[]` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ByteArrayCronetCallback#transformBodyBytes(org.chromium.net.UrlResponseInfo,byte[])(https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info, byte[] bodyBytes)` Transforms (deserializes) the plain full body into a user-defined object. |

| ### Inherited methods |
|---|
| From [org.chromium.net.apihelpers.ImplicitFlowControlCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback) |---|---| | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback#onCanceled(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo)(https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest request, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info)` Invoked if request was canceled via `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#cancel()`. | | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback#onFailed(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo,org.chromium.net.CronetException)( https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest request, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetException error )` Invoked if request failed for any reason after `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#start()`. | | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback#onReadCompleted(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo,java.nio.ByteBuffer)( https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest request, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info, https://developer.android.com/reference/java/nio/ByteBuffer.html byteBuffer )` Invoked whenever part of the response body has been read. | | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback#onRedirectReceived(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo,java.lang.String)( https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest request, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info, https://developer.android.com/reference/java/lang/String.html newLocationUrl )` Invoked whenever a redirect is encountered. | | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback#onResponseStarted(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo)(https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest request, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info)` Invoked when the final set of headers, after all redirects, is received. | | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback#onSucceeded(org.chromium.net.UrlRequest,org.chromium.net.UrlResponseInfo)(https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest request, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info)` Invoked when request is completed successfully. | | `abstract boolean` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback#shouldFollowRedirect(org.chromium.net.UrlResponseInfo,java.lang.String)(https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info, https://developer.android.com/reference/java/lang/String.html newLocationUrl)` Invoked whenever a redirect is encountered. | |
| From [org.chromium.net.apihelpers.InMemoryTransformCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback) |---|---| | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback#onBodyChunkRead(org.chromium.net.UrlResponseInfo,java.nio.ByteBuffer)(https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info, https://developer.android.com/reference/java/nio/ByteBuffer.html bodyChunk)` Invoked whenever part of the response body has been read. | | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback#onCanceled(org.chromium.net.UrlResponseInfo)(@https://developer.android.com/reference/androidx/annotation/Nullable.html https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info)` Invoked if request was canceled via `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#cancel()`. | | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback#onFailed(org.chromium.net.UrlResponseInfo,org.chromium.net.CronetException)(@https://developer.android.com/reference/androidx/annotation/Nullable.html https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetException exception)` Invoked if request failed for any reason after `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#start()`. | | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback#onResponseStarted(org.chromium.net.UrlResponseInfo)(https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info)` Invoked when the final set of headers, after all redirects, is received. | | `final void` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback#onSucceeded(org.chromium.net.UrlResponseInfo)(https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info)` Invoked when request is completed successfully. | |
| From [org.chromium.net.UrlRequest.Callback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback) |---|---| | `abstract void` | `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)( https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest request, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetException error )` Invoked if request failed for any reason after `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#start()`. | | `abstract void` | `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)( https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest request, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info, https://developer.android.com/reference/java/nio/ByteBuffer.html byteBuffer )` Invoked whenever part of the response body has been read. | | `abstract void` | `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)( https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest request, https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo info, https://developer.android.com/reference/java/lang/String.html newLocationUrl )` Invoked whenever a redirect is encountered. | |

## Public constructors

### ByteArrayCronetCallback

```
public ByteArrayCronetCallback()
```

## Public methods

### addCompletionListener

```
public ByteArrayCronetCallback addCompletionListener(
    CronetRequestCompletionListener<byte[]> listener
)
```

Adds a completion listener. All listeners are informed when the request reaches a terminal state, in order of addition. If a listener is added multiple times, it will only be called once according to the first time it was added.

| See also |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/CronetRequestCompletionListener` |   |

## Protected methods

### transformBodyBytes

```
protected final byte[] transformBodyBytes(UrlResponseInfo info, byte[] bodyBytes)
```

Transforms (deserializes) the plain full body into a user-defined object.

It is assumed that the implementing classes handle edge cases (such as empty and malformed bodies) appropriately. Cronet doesn't inspects the objects and passes them (or any exceptions) along to the issuer of the request.