UrlRequest.Callback

public abstract class UrlRequest.Callback

已知的直接子类
ImplicitFlowControlCallback

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

已知的间接子类
ByteArrayCronetCallback

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

InMemoryTransformCronetCallback

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

JsonCronetCallback

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

StringCronetCallback

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


Cronet 的用户可扩展此类,以接收指示正在处理的 UrlRequest 的进度的回调。此类的一个实例会传递到 UrlRequest.Builder 的构造函数中,以构造 UrlRequest

注意:所有方法都将在构造 UrlRequest 期间使用的 java.util.concurrent.Executor 的线程上调用。

摘要

公共构造函数

公共方法

void

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

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
)

每当遇到重定向时调用。

abstract void

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

abstract void

在请求成功完成时调用。

公共构造函数

回调

public Callback()

公共方法

onCanceled

public void onCanceled(UrlRequest request, UrlResponseInfo info)

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

参数
UrlRequest request

已取消的请求。

UrlResponseInfo info

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

onFailed

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

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

参数
UrlRequest request

失败的请求。

UrlResponseInfo info

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

CronetException error

有关错误的信息。

onReadCompleted

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

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

参数
UrlRequest request

收到数据的请求。

UrlResponseInfo info

响应信息。

ByteBuffer byteBuffer

传递到 UrlRequest.read() 的缓冲区,现在包含收到的数据。缓冲区的指针会更新到收到的数据的末尾。缓冲区的限制不会更改。

抛出
java.lang.Exception

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

onRedirectReceived

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

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

参数
UrlRequest request

正在重定向的请求。

UrlResponseInfo info

响应信息。

String newLocationUrl

请求重定向到的位置。

抛出
java.lang.Exception

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

onResponseStarted

public abstract void onResponseStarted(UrlRequest request, UrlResponseInfo info)

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

参数
UrlRequest request

开始获取响应的请求。

UrlResponseInfo info

响应信息。

抛出
java.lang.Exception

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

onSucceeded

public abstract void onSucceeded(UrlRequest request, UrlResponseInfo info)

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

参数
UrlRequest request

成功的请求。

UrlResponseInfo info

响应信息。