InMemoryTransformCronetCallback

public abstract class InMemoryTransformCronetCallback<T> extends ImplicitFlowControlCallback

已知的直接子类
ByteArrayCronetCallback

InMemoryTransformCronetCallback 的一种特殊类型,可原封不动地返回正文字节,而不进行任何解释。

JsonCronetCallback

InMemoryTransformCronetCallback 的一种特殊类型,可将响应正文解释为 JSON。

StringCronetCallback

InMemoryTransformCronetCallback 的一种特殊类型,可将响应正文解释为字符串。


一种抽象 Cronet 回调,可将整个正文读取到内存中,并可选择在将正文传递回 HTTP 请求的发布者之前对其进行反序列化。

请求者可以通过在回调中添加完成 mListeners 来订阅有关请求的更新。当请求达到终端状态时,系统会按照添加顺序通知 mListeners。

参数
<T>

响应正文类型

摘要

公共构造函数

公共方法

ImplicitFlowControlCallback

添加完成监听器。

受保护的方法

final void

在读取部分响应正文后调用。

final void

如果请求通过 cancel 取消,则调用。

final void

如果请求在 start 后因任何原因失败,则调用。

final void

在收到最后一组标头(在所有重定向之后)时调用。

final void

在请求成功完成时调用。

abstract T
transformBodyBytes(UrlResponseInfo info, byte[] bodyBytes)

将纯文本完整正文转换为(反序列化为)用户定义的对象。

继承的方法

来自 org.chromium.net.apihelpers.ImplicitFlowControlCallback
final void

如果请求通过 cancel 取消,则调用。

final void
onFailed(
    UrlRequest request,
    UrlResponseInfo info,
    CronetException error
)

如果请求在 start 后因任何原因失败,则调用。

final void
onReadCompleted(
    UrlRequest request,
    UrlResponseInfo info,
    ByteBuffer byteBuffer
)

在读取部分响应正文后调用。

final void
onRedirectReceived(
    UrlRequest request,
    UrlResponseInfo info,
    String newLocationUrl
)

每当遇到重定向时调用。

final void

在收到最后一组标头(在所有重定向之后)时调用。

final void

在请求成功完成时调用。

abstract boolean

每当遇到重定向时调用。

来自 org.chromium.net.UrlRequest.Callback
abstract void
onFailed(
    UrlRequest request,
    UrlResponseInfo info,
    CronetException error
)

如果请求在 start 后因任何原因失败,则调用。

abstract void
onReadCompleted(
    UrlRequest request,
    UrlResponseInfo info,
    ByteBuffer byteBuffer
)

在读取部分响应正文后调用。

abstract void
onRedirectReceived(
    UrlRequest request,
    UrlResponseInfo info,
    String newLocationUrl
)

每当遇到重定向时调用。

公共构造函数

InMemoryTransformCronetCallback

public InMemoryTransformCronetCallback()

公共方法

addCompletionListener

public ImplicitFlowControlCallback addCompletionListener(CronetRequestCompletionListener<T> listener)

添加完成监听器。当请求达到终端状态时,系统会按照添加顺序通知所有监听器。如果多次添加监听器,系统只会根据首次添加监听器的时间调用一次。

受保护的方法

onBodyChunkRead

protected final void onBodyChunkRead(UrlResponseInfo info, ByteBuffer bodyChunk)

在读取部分响应正文后调用。即使尚未消耗整个响应正文,也可能只填充了部分缓冲区。缓冲区已准备好进行读取。缓冲区在内部重复使用,因此实现类不应存储缓冲区,也不应在实现此方法之外的任何其他位置使用缓冲区。

参数
UrlResponseInfo info

响应信息。

ByteBuffer bodyChunk

包含接收到的数据的缓冲区,已翻转以供读取。

抛出
java.lang.Exception

如果在处理读取完成时发生错误。系统将调用 onFailed,并将抛出的异常设置为 CallbackException 的原因。

onCanceled

protected final void onCanceled(@Nullable UrlResponseInfo info)

如果请求通过 cancel 取消,则调用。调用后,系统不会调用任何其他 UrlRequest.Callback 方法。

参数
@Nullable UrlResponseInfo info

响应信息。如果未收到任何响应,则可能为 null

onFailed

protected final void onFailed(@Nullable UrlResponseInfo info, CronetException exception)

如果请求在 start 后因任何原因失败,则调用。调用后,系统不会调用任何其他 UrlRequest.Callback 方法。error 提供有关失败的信息。

参数
@Nullable UrlResponseInfo info

响应信息。如果未收到任何响应,则可能为 null

CronetException exception

有关错误的信息。

onResponseStarted

protected final void onResponseStarted(UrlResponseInfo info)

在收到最后一组标头(在所有重定向之后)时调用。对于每个请求,只会调用一次。系统保证,Cronet 在此方法返回之前不会开始读取正文。

参数
UrlResponseInfo info

响应信息。

抛出
java.lang.Exception

如果在处理响应开始时发生错误。系统将调用 onFailed,并将抛出的异常设置为 CallbackException 的原因。

onSucceeded

protected final void onSucceeded(UrlResponseInfo info)

在请求成功完成时调用。调用后,系统不会调用任何其他 UrlRequest.Callback 方法。

参数
UrlResponseInfo info

响应信息。

transformBodyBytes

protected abstract T transformBodyBytes(UrlResponseInfo info, byte[] bodyBytes)

将纯文本完整正文转换为(反序列化为)用户定义的对象。

假定实现类可以适当地处理极端情况(例如空正文和格式错误的正文)。Cronet 不会检查对象,而是将对象(或任何异常)传递给请求的发布者。