UrlRequest.Builder

abstract class UrlRequest.Builder


UrlRequest 的建構工具。允許在以 build 建構要求之前設定要求。呼叫 newUrlRequestBuilder 即可建立建構工具。

摘要

常數

const Int

最高要求優先順序。

const Int

要求優先順序最低。

const Int

要求優先順序較低。

const Int

要求優先順序極低。

const Int

中等優先順序的請求。

公用建構函式

公開函式

abstract UrlRequest.Builder!
addHeader(header: String!, value: String!)

新增要求標頭。

UrlRequest.Builder!
addRequestAnnotation(annotation: Any!)

將註解物件與這項要求建立關聯。

abstract UrlRequest.Builder!

標記執行器,這個要求會用來通知回呼 (適用於 UploadDataProviderUrlRequest.Callback),表示有意執行內嵌執行作業,例如 Guava 的 directExecutor 或 java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy

UrlRequest.Builder!
bindToNetwork(networkHandle: Long)

將要求繫結至指定的網路控制代碼。

abstract UrlRequest!

使用這個 Builder 中的設定建立 UrlRequest

abstract UrlRequest.Builder!

停用要求快取。

abstract UrlRequest.Builder!

設定要用於這項要求的 HTTP 方法動詞。

abstract UrlRequest.Builder!
setPriority(priority: Int)

設定要求優先順序,應為 REQUEST_PRIORITY_* 值之一。

UrlRequest.Builder!
@UrlRequest.Experimental
setRawCompressionDictionary(
    dictionarySha256Hash: ByteArray!,
    dictionary: ByteBuffer!,
    dictionaryId: String!
)

允許 Cronet 對這項要求使用指定的壓縮字典。

UrlRequest.Builder!

設定在 onCanceled() onFailed()onSucceeded() 傳回後叫用的監聽器。

UrlRequest.Builder!

設定 android.net.TrafficStats 標記,用於計算這項要求造成的通訊端流量。

UrlRequest.Builder!

設定特定 UID,用於計算這項要求造成的通訊端流量。

abstract UrlRequest.Builder!
setUploadDataProvider(
    uploadDataProvider: UploadDataProvider!,
    executor: Executor!
)

設定上傳資料供應商。

常數

REQUEST_PRIORITY_HIGHEST

const val REQUEST_PRIORITY_HIGHEST = 4: Int

最高要求優先順序。已轉交給「setPriority」。

REQUEST_PRIORITY_IDLE

const val REQUEST_PRIORITY_IDLE = 0: Int

要求優先順序最低。已轉交給「setPriority」。

REQUEST_PRIORITY_LOW

const val REQUEST_PRIORITY_LOW = 2: Int

要求優先順序較低。已轉交給「setPriority」。

REQUEST_PRIORITY_LOWEST

const val REQUEST_PRIORITY_LOWEST = 1: Int

要求優先順序極低。已轉交給「setPriority」。

REQUEST_PRIORITY_MEDIUM

const val REQUEST_PRIORITY_MEDIUM = 3: Int

中等優先順序的請求。已轉交給「setPriority」。這是系統預設的請求優先順序。

公用建構函式

Builder

Builder()

公開函式

addHeader

abstract fun addHeader(header: String!, value: String!): UrlRequest.Builder!

新增要求標頭。

參數
header: String!

標頭名稱。

value: String!

標頭值。

傳回
UrlRequest.Builder!

建構工具,方便鏈結。

addRequestAnnotation

fun addRequestAnnotation(annotation: Any!): UrlRequest.Builder!

將註解物件與這項要求建立關聯。可以新增多個。傳遞至 RequestFinishedInfo.Listener,請參閱 getAnnotations

參數
annotation: Any!

要傳遞至 RequestFinishedInfo.Listener 的物件,其中包含 RequestFinishedInfo

傳回
UrlRequest.Builder!

建構工具,方便鏈結。

allowDirectExecutor

abstract fun allowDirectExecutor(): UrlRequest.Builder!

標記執行器,這個要求會用來通知回呼 (適用於 UploadDataProviderUrlRequest.Callback),表示執行器會刻意執行內嵌執行作業,例如 Guava 的 directExecutor 或 java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy

警告:這個選項很容易導致網路執行緒遭到封鎖。如果回呼會執行磁碟 I/O、取得鎖定或呼叫您未仔細控管及稽核的其他程式碼,則不應使用此方法。

bindToNetwork

fun bindToNetwork(networkHandle: Long): UrlRequest.Builder!

將要求繫結至指定的網路控制代碼。Cronet 只會使用與這個控制代碼相關聯的網路傳送這項要求。如果這個網路中斷連線,要求就會失敗,確切的錯誤會取決於網路中斷連線時的要求處理階段。網路控制代碼可透過 Network#getNetworkHandle 取得。僅適用於 Android Marshmallow 以上版本。

參數
networkHandle: Long

要將要求繫結至的網路控制代碼。指定 UNBIND_NETWORK_HANDLE 即可解除繫結。

傳回
UrlRequest.Builder!

建構工具,方便鏈結。

build

abstract fun build(): UrlRequest!

使用這個 Builder 內的設定建立 UrlRequest。然後呼叫 start 即可啟動傳回的 UrlRequest

傳回
UrlRequest!

使用這個 Builder 內的設定建構 UrlRequest

disableCache

abstract fun disableCache(): UrlRequest.Builder!

停用要求快取。如果未設定使用快取的環境,這個呼叫就不會生效。

傳回
UrlRequest.Builder!

建構工具,方便鏈結。

setHttpMethod

abstract fun setHttpMethod(method: String!): UrlRequest.Builder!

設定要用於這項要求的 HTTP 方法動詞。

如果要求沒有主體,且未呼叫這個方法,預設值為「GET」;如果要求有主體,預設值則為「POST」。

參數
method: String!

「GET」、「HEAD」、「DELETE」、「POST」或「PUT」。

傳回
UrlRequest.Builder!

建構工具,方便鏈結。

setPriority

abstract fun setPriority(priority: Int): UrlRequest.Builder!

設定要求優先順序,應為 REQUEST_PRIORITY_* 值之一。如果未呼叫這個方法,要求會獲得 REQUEST_PRIORITY_MEDIUM 優先順序。

參數
priority: Int

要求優先順序,應為 REQUEST_PRIORITY_* 值之一。

傳回
UrlRequest.Builder!

建構工具,方便鏈結。

setRawCompressionDictionary

@UrlRequest.Experimental
fun setRawCompressionDictionary(
    dictionarySha256Hash: ByteArray!,
    dictionary: ByteBuffer!,
    dictionaryId: String!
): UrlRequest.Builder!

允許 Cronet 對這項要求使用指定的壓縮字典。指定後,Cronet 可能會向伺服器發出信號,表示有可用的壓縮字典。如要讓這項設定生效,執行這項要求的 CronetEngine 必須已設定為啟用支援外部字典的壓縮配置。這會在 Cronet 中部分實作 draft-ietf-httpbis-compression-dictionary。Cronet 不會直接處理「Use-As-Dictionary」回應標頭,而是會依賴嵌入器:處理這些標頭,然後針對符合 Use-As-Dictionary 規則的要求呼叫 UrlRequest.Builder#setCompressionDictionary;或透過其他頻外機制擷取壓縮字典,然後呼叫 UrlRequest.Builder#setCompressionDictionary。Cronet 會將字典解讀為只符合這個 UrlRequest。如果該要求遭到重新導向,且嵌入器決定追蹤重新導向,字典也會比對新網址。

參數
dictionarySha256Hash: ByteArray!

指定壓縮字典的 SHA-256。

dictionary: ByteBuffer!

Cronet 可用於這個 UrlRequest 的壓縮字典。這必須是直接 ByteBuffer。

dictionaryId: String!

與這個字典相關聯的選用 ID,如缺少則必須為空字串。如有,系統會透過 Dictionary-ID 標頭傳送這個值。如果伺服器在「Use-As-Dictionary」回應中指定了 ID,您就必須指定這個 ID。

傳回
UrlRequest.Builder!

建構工具,方便鏈結。

setRequestFinishedListener

fun setRequestFinishedListener(listener: RequestFinishedInfo.Listener!): UrlRequest.Builder!

設定在 onCanceled() onFailed()onSucceeded() 傳回後叫用的監聽器。

系統會在 getExecutor() 提供的 java.util.concurrent.Executor 上,使用要求完成資訊叫用事件監聽器。

參數
listener: RequestFinishedInfo.Listener!

已完成要求的接聽程式。

傳回
UrlRequest.Builder!

建構工具,方便鏈結。

setTrafficStatsTag

fun setTrafficStatsTag(tag: Int): UrlRequest.Builder!

設定 android.net.TrafficStats 標記,用於計算這項要求造成的通訊端流量。詳情請參閱 android.net.TrafficStats。如果未設定標記 (例如未呼叫這個方法),Android 會將這項要求造成的通訊端流量視為標記值設為 0。

注意:設定標記會禁止與其他標記的要求共用通訊端,這可能會禁止共用連線,進而對效能造成負面影響。換句話說,只有在所有要求都有相同的通訊端標記時,才能使用多路複用通訊端 (例如 HTTP/2 和 QUIC)。

參數
tag: Int

用於計算這項要求造成的通訊端流量。0xFFFFFF00 到 0xFFFFFFFF 之間的標記會保留給系統服務內部使用,例如 android.app.DownloadManager 代表應用程式執行流量時。

傳回
UrlRequest.Builder!

建構工具,方便鏈結。

setTrafficStatsUid

fun setTrafficStatsUid(uid: Int): UrlRequest.Builder!

設定特定 UID,用於計算這項要求造成的通訊端流量。詳情請參閱 android.net.TrafficStats。專為代表其他應用程式執行作業時使用。呼叫者必須擁有 MODIFY_NETWORK_ACCOUNTING 權限。根據預設,流量會歸因於呼叫端的 UID。

注意:設定 UID 會禁止與其他 UID 的要求共用通訊端,這可能會禁止共用連線,進而對效能造成負面影響。換句話說,只有在所有要求都設定相同的 UID 時,才能使用多路複用通訊端 (例如 HTTP/2 和 QUIC)。

參數
uid: Int

用於將這項要求造成的通訊端流量歸因於該 UID。

傳回
UrlRequest.Builder!

建構工具,方便鏈結。

setUploadDataProvider

abstract fun setUploadDataProvider(
    uploadDataProvider: UploadDataProvider!,
    executor: Executor!
): UrlRequest.Builder!

設定上傳資料供應商。如果未明確設定,則會將方法切換為「POST」。如果未設定 Content-Type 標頭,啟動要求時會擲回例外狀況。

參數
uploadDataProvider: UploadDataProvider!

負責提供上傳資料。

executor: Executor!

所有 uploadDataProvider 方法都會使用這個 Executor 叫用。可選擇性地與要求本身使用的 Executor 相同。

傳回
UrlRequest.Builder!

建構工具,方便鏈結。