ImplicitFlowControlCallback

public abstract class ImplicitFlowControlCallback extends UrlRequest.Callback

已知的直接子類別
InMemoryTransformCronetCallback

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

已知的間接子類別
ByteArrayCronetCallback

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

JsonCronetCallback

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

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

參數
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() 之間叫用這個方法。如果重新導向回應有主體,系統會略過。在同步或非同步呼叫 URLRequest 的 followRedirect 方法之前,系統不會追蹤重新導向。

參數
UrlRequest request

要求重新導向。

UrlResponseInfo info

回覆資訊。

String newLocationUrl

要求重新導向的位置。

擲回
java.lang.Exception

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

onResponseStarted

public final void onResponseStarted(UrlRequest request, UrlResponseInfo info)

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

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