ImplicitFlowControlCallback

abstract class ImplicitFlowControlCallback : UrlRequest.Callback

已知的直接子类
InMemoryTransformCronetCallback

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

已知的间接子类
ByteArrayCronetCallback

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

JsonCronetCallback

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

StringCronetCallback

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


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

摘要

公共构造函数

公共函数

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

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

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

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

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

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

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

每当遇到重定向时调用。

Unit

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

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

在请求成功完成时调用。

受保护的函数

abstract Unit

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

abstract Unit

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

abstract Unit
onFailed(info: UrlResponseInfo?, exception: CronetException!)

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

abstract Unit

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

abstract Unit

在请求成功完成时调用。

abstract Boolean
shouldFollowRedirect(info: UrlResponseInfo!, newLocationUrl: String!)

每当遇到重定向时调用。

公共构造函数

ImplicitFlowControlCallback

ImplicitFlowControlCallback()

公共函数

onCanceled

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

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

参数
request: UrlRequest!

已取消的请求。

info: UrlResponseInfo!

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

onFailed

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

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

参数
request: UrlRequest!

失败的请求。

info: UrlResponseInfo!

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

error: CronetException!

有关错误的信息。

onReadCompleted

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

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

参数
request: UrlRequest!

接收数据的请求。

info: UrlResponseInfo!

回答信息。

byteBuffer: ByteBuffer!

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

抛出
java.lang.Exception

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

onRedirectReceived

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

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

参数
request: UrlRequest!

请求正在重定向。

info: UrlResponseInfo!

回答信息。

newLocationUrl: String!

重定向请求的位置。

抛出
java.lang.Exception

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

onResponseStarted

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

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

参数
request: UrlRequest!

已开始接收响应的请求。

info: UrlResponseInfo!

回答信息。

抛出
java.lang.Exception

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

onSucceeded

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

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

参数
request: UrlRequest!

成功完成的请求。

info: UrlResponseInfo!

回答信息。

受保护的函数

onBodyChunkRead

protected abstract fun onBodyChunkRead(info: UrlResponseInfo!, bodyChunk: ByteBuffer!): Unit

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

参数
info: UrlResponseInfo!

回答信息。

bodyChunk: ByteBuffer!

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

抛出
java.lang.Exception

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

onCanceled

protected abstract fun onCanceled(info: UrlResponseInfo?): Unit

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

参数
info: UrlResponseInfo?

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

onFailed

protected abstract fun onFailed(info: UrlResponseInfo?, exception: CronetException!): Unit

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

参数
info: UrlResponseInfo?

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

exception: CronetException!

有关错误的信息。

onResponseStarted

protected abstract fun onResponseStarted(info: UrlResponseInfo!): Unit

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

参数
info: UrlResponseInfo!

回答信息。

抛出
java.lang.Exception

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

onSucceeded

protected abstract fun onSucceeded(info: UrlResponseInfo!): Unit

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

参数
info: UrlResponseInfo!

回答信息。

shouldFollowRedirect

protected abstract fun shouldFollowRedirect(info: UrlResponseInfo!, newLocationUrl: String!): Boolean

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

参数
info: UrlResponseInfo!

回答信息。

newLocationUrl: String!

重定向请求的位置。

返回
Boolean

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

抛出
java.lang.Exception

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