UrlRequest.Builder

public abstract class UrlRequest.Builder


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

摘要

常數

static final int

最高要求優先順序。

static final int

要求優先順序最低。

static final int

要求優先順序較低。

static final int

要求優先順序極低。

static final int

中等優先順序的請求。

公用建構函式

公用方法

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

新增要求標頭。

UrlRequest.Builder

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

abstract UrlRequest.Builder

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

UrlRequest.Builder
bindToNetwork(long networkHandle)

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

abstract UrlRequest

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

abstract UrlRequest.Builder

停用要求快取。

abstract UrlRequest.Builder

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

abstract UrlRequest.Builder
setPriority(int priority)

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

UrlRequest.Builder
@UrlRequest.Experimental
setRawCompressionDictionary(
    byte[] dictionarySha256Hash,
    ByteBuffer dictionary,
    String dictionaryId
)

允許 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

public static final int REQUEST_PRIORITY_HIGHEST = 4

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

REQUEST_PRIORITY_IDLE

public static final int REQUEST_PRIORITY_IDLE = 0

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

REQUEST_PRIORITY_LOW

public static final int REQUEST_PRIORITY_LOW = 2

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

REQUEST_PRIORITY_LOWEST

public static final int REQUEST_PRIORITY_LOWEST = 1

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

REQUEST_PRIORITY_MEDIUM

public static final int REQUEST_PRIORITY_MEDIUM = 3

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

公用建構函式

Builder

public Builder()

公用方法

addHeader

public abstract UrlRequest.Builder addHeader(String header, String value)

新增要求標頭。

參數
String header

標頭名稱。

String value

標頭值。

傳回
UrlRequest.Builder

建構工具,方便鏈結。

addRequestAnnotation

public UrlRequest.Builder addRequestAnnotation(Object annotation)

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

參數
Object annotation

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

傳回
UrlRequest.Builder

建構工具,方便鏈結。

allowDirectExecutor

public abstract UrlRequest.Builder allowDirectExecutor()

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

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

bindToNetwork

public UrlRequest.Builder bindToNetwork(long networkHandle)

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

參數
long networkHandle

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

傳回
UrlRequest.Builder

建構工具,方便鏈結。

build

public abstract UrlRequest build()

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

傳回
UrlRequest

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

disableCache

public abstract UrlRequest.Builder disableCache()

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

傳回
UrlRequest.Builder

建構工具,方便鏈結。

setHttpMethod

public abstract UrlRequest.Builder setHttpMethod(String method)

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

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

參數
String method

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

傳回
UrlRequest.Builder

建構工具,方便鏈結。

setPriority

public abstract UrlRequest.Builder setPriority(int priority)

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

參數
int priority

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

傳回
UrlRequest.Builder

建構工具,方便鏈結。

setRawCompressionDictionary

@UrlRequest.Experimental
public UrlRequest.Builder setRawCompressionDictionary(
    byte[] dictionarySha256Hash,
    ByteBuffer dictionary,
    String dictionaryId
)

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

參數
byte[] dictionarySha256Hash

指定壓縮字典的 SHA-256。

ByteBuffer dictionary

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

String dictionaryId

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

傳回
UrlRequest.Builder

建構工具,方便鏈結。

setRequestFinishedListener

public UrlRequest.Builder setRequestFinishedListener(RequestFinishedInfo.Listener listener)

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

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

參數
RequestFinishedInfo.Listener listener

已完成要求的接聽程式。

傳回
UrlRequest.Builder

建構工具,方便鏈結。

setTrafficStatsTag

public UrlRequest.Builder setTrafficStatsTag(int tag)

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

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

參數
int tag

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

傳回
UrlRequest.Builder

建構工具,方便鏈結。

setTrafficStatsUid

public UrlRequest.Builder setTrafficStatsUid(int uid)

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

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

參數
int uid

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

傳回
UrlRequest.Builder

建構工具,方便鏈結。

setUploadDataProvider

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

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

參數
UploadDataProvider uploadDataProvider

負責提供上傳資料。

Executor executor

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

傳回
UrlRequest.Builder

建構工具,方便鏈結。