UrlRequest.Callback

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 的线程上调用。

摘要

公共构造函数

公共函数

Unit
onCanceled(request: UrlRequest!, info: UrlResponseInfo!)

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

abstract Unit
onFailed(
    request: UrlRequest!,
    info: UrlResponseInfo!,
    error: CronetException!
)

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

abstract Unit
onReadCompleted(
    request: UrlRequest!,
    info: UrlResponseInfo!,
    byteBuffer: ByteBuffer!
)

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

abstract Unit
onRedirectReceived(
    request: UrlRequest!,
    info: UrlResponseInfo!,
    newLocationUrl: String!
)

每当遇到重定向时调用。

abstract Unit

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

abstract Unit
onSucceeded(request: UrlRequest!, info: UrlResponseInfo!)

在请求成功完成时调用。

公共构造函数

回调

Callback()

公共函数

onCanceled

fun onCanceled(request: UrlRequest!, info: UrlResponseInfo!): Unit

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

参数
request: UrlRequest!

已取消的请求。

info: UrlResponseInfo!

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

onFailed

abstract fun onFailed(
    request: UrlRequest!,
    info: UrlResponseInfo!,
    error: CronetException!
): Unit

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

参数
request: UrlRequest!

失败的请求。

info: UrlResponseInfo!

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

error: CronetException!

有关错误的信息。

onReadCompleted

abstract fun onReadCompleted(
    request: UrlRequest!,
    info: UrlResponseInfo!,
    byteBuffer: ByteBuffer!
): Unit

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

参数
request: UrlRequest!

收到数据的请求。

info: UrlResponseInfo!

响应信息。

byteBuffer: ByteBuffer!

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

抛出
java.lang.Exception

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

onRedirectReceived

abstract fun onRedirectReceived(
    request: UrlRequest!,
    info: UrlResponseInfo!,
    newLocationUrl: String!
): Unit

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

参数
request: UrlRequest!

正在重定向的请求。

info: UrlResponseInfo!

响应信息。

newLocationUrl: String!

请求重定向到的位置。

抛出
java.lang.Exception

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

onResponseStarted

abstract fun onResponseStarted(request: UrlRequest!, info: UrlResponseInfo!): Unit

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

参数
request: UrlRequest!

开始获取响应的请求。

info: UrlResponseInfo!

响应信息。

抛出
java.lang.Exception

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

onSucceeded

abstract fun onSucceeded(request: UrlRequest!, info: UrlResponseInfo!): Unit

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

参数
request: UrlRequest!

成功的请求。

info: UrlResponseInfo!

响应信息。