ImplicitFlowControlCallback

abstract class ImplicitFlowControlCallback : UrlRequest.Callback

已知的直接子類別
InMemoryTransformCronetCallback

抽象 Cronet 回呼,可將整個主體讀取至記憶體,並視需要還原序列化主體,再傳回給 HTTP 要求的發行者。

已知的間接子類別
ByteArrayCronetCallback

InMemoryTransformCronetCallback 的特化版本,會傳回未經解譯的內文位元組。

JsonCronetCallback

InMemoryTransformCronetCallback 的特化版本,可將回應主體解讀為 JSON。

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() 之外,系統不會為要求叫用任何其他 Callback 方法 (包括 onSucceeded()onFailed()),直到呼叫 UrlRequest.read() 嘗試繼續讀取回應內文為止。

參數
request: UrlRequest!

要求接收資料。

info: UrlResponseInfo!

回覆資訊。

byteBuffer: ByteBuffer!

傳遞至 UrlRequest.read() 的緩衝區,現在包含收到的資料。緩衝區的位置會更新為接收資料的結尾。緩衝區的限制不會變更。

擲回
java.lang.Exception

如果處理讀取完成作業時發生錯誤,系統會呼叫 onFailed,並將擲回的例外狀況設為 CallbackException 的原因。

onRedirectReceived

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

每當遇到重新導向時,系統就會叫用這個方法。系統只會在呼叫 startonResponseStarted() 之間叫用這個方法。如果重新導向回應有主體,系統會略過。在同步或非同步呼叫 URLRequest 的 followRedirect 方法之前,系統不會追蹤重新導向。

參數
request: UrlRequest!

要求重新導向。

info: UrlResponseInfo!

回覆資訊。

newLocationUrl: String!

要求重新導向的位置。

擲回
java.lang.Exception

如果處理重新導向時發生錯誤,系統會呼叫 onFailed,並將擲回的例外狀況設為 CallbackException 的原因。

onResponseStarted

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

在收到所有重新導向後的最終標頭集時叫用。每個要求只會叫用一次。除了 onCanceled() 之外,系統不會為要求叫用任何其他 Callback 方法 (包括 onSucceeded()onFailed()),直到呼叫 UrlRequest.read() 嘗試開始讀取回應內文為止。

參數
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 的原因。