ImplicitFlowControlCallback

public abstract class ImplicitFlowControlCallback extends UrlRequest.Callback

已知的直接子类
InMemoryTransformCronetCallback

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

已知的间接子类
ByteArrayCronetCallback

InMemoryTransformCronetCallback 的一种特殊化,可按原样返回正文字节,而不进行任何解释。

JsonCronetCallback

一种将响应正文解释为 JSON 的 InMemoryTransformCronetCallback 特殊化。

StringCronetCallback

一种将响应正文解读为字符串的 InMemoryTransformCronetCallback 特殊化。


UrlRequest.Callback 的一种实现,可消除管理请求生命周期的难度,并自动继续读取整个响应。

摘要

公共构造函数

公共方法

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 void

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

abstract void

如果请求是通过 cancel 取消的,则调用该方法。

abstract void

start 之后,如果因任何原因导致请求失败,则调用此方法。

abstract void

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

abstract void

在请求成功完成时调用。

abstract boolean

每当遇到重定向时调用。

公共构造函数

ImplicitFlowControlCallback

public ImplicitFlowControlCallback()

公共方法

onCanceled

public final void onCanceled(UrlRequest request, UrlResponseInfo info)

如果请求是通过 cancel 取消的,则调用该方法。调用该方法之后,就不会再调用其他 Callback 方法。默认实现不执行任何操作。

参数
UrlRequest request

已取消的请求。

UrlResponseInfo info

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

onFailed

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

如果在 start 之后因任何原因导致请求失败,则调用此方法。调用该方法之后,就不会再调用其他 Callback 方法。error 提供有关失败的信息。

参数
UrlRequest request

失败的请求。

UrlResponseInfo info

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

CronetException error

有关错误的信息。

onReadCompleted

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

在读取部分响应正文后调用。即使尚未消耗整个响应正文,也可能只填充了部分缓冲区。除了 onCanceled() 之外,在调用 UrlRequest.read() 以尝试继续读取响应正文之前,不会为请求调用任何其他 Callback 方法(包括 onSucceeded()onFailed())。

参数
UrlRequest request

接收数据的请求。

UrlResponseInfo info

回答信息。

ByteBuffer byteBuffer

传递给 UrlRequest.read() 的缓冲区,现在包含接收到的数据。缓冲区的位置会更新为接收到的数据的末尾。缓冲区限制未更改。

抛出
java.lang.Exception

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

onRedirectReceived

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

每当遇到重定向时调用。此方法仅在调用 startonResponseStarted() 之间调用。重定向响应的正文(如果有)将被忽略。在同步或异步调用 网址Request 的 followRedirect 方法之前,系统不会遵循重定向。

参数
UrlRequest request

请求正在重定向。

UrlResponseInfo info

回答信息。

String newLocationUrl

重定向请求的位置。

抛出
java.lang.Exception

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

onResponseStarted

public final void onResponseStarted(UrlRequest request, UrlResponseInfo info)

在收到最后一组标头(在所有重定向之后)时调用。每个请求只会调用一次。除了 onCanceled() 之外,在调用 UrlRequest.read() 以尝试开始读取响应正文之前,不会为请求调用任何其他 Callback 方法,包括 onSucceeded()onFailed()

参数
UrlRequest request

已开始接收响应的请求。

UrlResponseInfo info

回答信息。

抛出
java.lang.Exception

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

onSucceeded

public final void onSucceeded(UrlRequest request, UrlResponseInfo info)

在请求成功完成时调用。调用该方法后,不会再调用其他 Callback 方法。

参数
UrlRequest request

成功完成的请求。

UrlResponseInfo info

回答信息。

受保护的方法

onBodyChunkRead

protected abstract void onBodyChunkRead(UrlResponseInfo info, ByteBuffer bodyChunk)

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

参数
UrlResponseInfo info

回答信息。

ByteBuffer bodyChunk

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

抛出
java.lang.Exception

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

onCanceled

protected abstract void onCanceled(@Nullable UrlResponseInfo info)

如果请求是通过 cancel 取消的,则调用该方法。调用该方法后,不会再调用其他 UrlRequest.Callback 方法。

参数
@Nullable UrlResponseInfo info

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

onFailed

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

如果在 start 之后因任何原因导致请求失败,则调用此方法。调用该方法之后,就不会再调用其他 UrlRequest.Callback 方法。error 提供有关失败的信息。

参数
@Nullable UrlResponseInfo info

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

CronetException exception

有关错误的信息。

onResponseStarted

protected abstract void onResponseStarted(UrlResponseInfo info)

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

参数
UrlResponseInfo info

回答信息。

抛出
java.lang.Exception

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

onSucceeded

protected abstract void onSucceeded(UrlResponseInfo info)

在请求成功完成时调用。调用该方法后,不会再调用其他 UrlRequest.Callback 方法。

参数
UrlResponseInfo info

回答信息。

shouldFollowRedirect

protected abstract boolean shouldFollowRedirect(UrlResponseInfo info, String newLocationUrl)

每当遇到重定向时调用。此方法仅在调用 startonResponseStarted() 之间调用。重定向响应的正文(如果有)将被忽略。

参数
UrlResponseInfo info

回答信息。

String newLocationUrl

重定向请求的位置。

返回
boolean

如果应遵循重定向,则为 true;如果应取消请求,则为 false。

抛出
java.lang.Exception

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