UrlRequest.Callback

public abstract class UrlRequest.Callback

已知的直接子類別
ImplicitFlowControlCallback

實作 UrlRequest.Callback,可簡化要求生命週期的管理作業,並自動繼續讀取完整的回應。

已知的間接子類別
ByteArrayCronetCallback

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

InMemoryTransformCronetCallback

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

JsonCronetCallback

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

StringCronetCallback

InMemoryTransformCronetCallback 的特化版本,可將回應內文解讀為字串。


Cronet 使用者會擴充這個類別,以接收回呼,指出正在處理的 UrlRequest 進度。建構 UrlRequest 時,這個類別的例項會傳遞至 UrlRequest.Builder 的建構函式。

注意:所有方法都會在建構 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

要求順利完成時會叫用此方法。

公用建構函式

Callback

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

回覆資訊。