CronetEngine.Builder

public class CronetEngine.Builder


CronetEngine 的建構工具,可讓您在執行階段設定 CronetEngine。設定選項會在建構工具上設定,然後呼叫 build 來建立 CronetEngine

摘要

巢狀型別

這個類別提供載入 cronet 原生程式庫的方法。

常數

static final int

設定為停用 HTTP 快取。

static final int

設定為啟用磁碟快取,包括 HTTP 資料。

static final int

設定為啟用磁碟快取,HTTP 資料除外。

static final int

設定啟用記憶體內 HTTP 快取,包括 HTTP 資料。

受保護的欄位

JSONObject

實驗性選項的 JSON 表示法。

公用建構函式

Builder(Context context)

建構 Builder 物件,方便建立 CronetEngine

公用方法

CronetEngine.Builder
addPublicKeyPins(
    String hostName,
    Set<byte[]> pinsSha256,
    boolean includeSubdomains,
    Date expirationDate
)

為特定主機釘選一組公開金鑰。

CronetEngine.Builder
addQuicHint(String host, int port, int alternatePort)

新增 host 支援 QUIC 的提示。

CronetEngine

使用這個建構工具的設定建構 CronetEngine

CronetEngine.Builder
enableBrotli(boolean value)

設定是否啟用 Brotli 壓縮功能。

CronetEngine.Builder
enableHttp2(boolean value)

設定是否啟用 HTTP/2 通訊協定。

CronetEngine.Builder
enableHttpCache(int cacheMode, long maxSize)

啟用或停用 HTTP 資料和其他資訊 (例如 QUIC 伺服器資訊) 的快取。

CronetEngine.Builder

啟用網路品質估算器,收集並回報網路堆疊各層的封包往返時間 (RTT) 和下游處理量測量結果。

CronetEngine.Builder

啟用或停用本機信任錨點的公開金鑰固定繞過功能。

CronetEngine.Builder
enableQuic(boolean value)

設定是否啟用 QUIC 通訊協定。

String

建構 User-Agent 字串,包括應用程式名稱和版本、系統建構版本、型號和 ID,以及 Cronet 版本。

CronetEngine.Builder
CronetEngine.Builder

設定連線遷移作業的行為。

CronetEngine.Builder

設定主機名稱查詢的行為。

CronetEngine.Builder
CronetEngine.Builder

設定用於載入原生程式庫的 LibraryLoader

CronetEngine.Builder

設定 Proxy 行為。

CronetEngine.Builder
CronetEngine.Builder

設定使用 QUIC 時的 Cronet 行為。

CronetEngine.Builder

設定 HTTP 快取和 Cookie 儲存空間的目錄。

CronetEngine.Builder
setThreadPriority(int priority)

這個方法已淘汰。

在最新版 Cronet 中,這個方法不會執行任何動作。

CronetEngine.Builder
setUserAgent(String userAgent)

覆寫所有要求的使用者代理程式標頭。

常數

HTTP_CACHE_DISABLED

public static final int HTTP_CACHE_DISABLED = 0

設定為停用 HTTP 快取。部分資料可能仍會暫時儲存在記憶體中。已轉交給「enableHttpCache」。

HTTP_CACHE_DISK

public static final int HTTP_CACHE_DISK = 3

設定啟用磁碟快取,包括 HTTP 資料。將這個常數傳遞至 enableHttpCache 之前,必須先呼叫 setStoragePath

HTTP_CACHE_DISK_NO_HTTP

public static final int HTTP_CACHE_DISK_NO_HTTP = 2

設定為啟用磁碟快取,但不包括 HTTP 資料。將這個常數傳遞至 enableHttpCache 之前,必須先呼叫 setStoragePath

HTTP_CACHE_IN_MEMORY

public static final int HTTP_CACHE_IN_MEMORY = 1

設定啟用記憶體內 HTTP 快取,包括 HTTP 資料。已轉交給「enableHttpCache」。

受保護的欄位

mParsedExperimentalOptions

protected JSONObject mParsedExperimentalOptions

實驗性選項的 JSON 表示法。

公用建構函式

Builder

public Builder(Context context)

建構 Builder 物件,方便建立 CronetEngine。預設設定會啟用 HTTP/2 和 QUIC,但停用 HTTP 快取。

參數
Context context

Android ContextBuilder 會使用這個類別擷取應用程式內容。系統只會保留應用程式內容的參照,避免不必要地延長 context 的生命週期。

公用方法

addPublicKeyPins

public CronetEngine.Builder addPublicKeyPins(
    String hostName,
    Set<byte[]> pinsSha256,
    boolean includeSubdomains,
    Date expirationDate
)

為特定主機釘選一組公開金鑰。綁定一組公開金鑰 ( pinsSha256) 後,與 hostName 通訊時,必須使用公開金鑰來自綁定憑證組的憑證進行驗證。應用程式可以固定根憑證、任何中繼憑證或尾端項目憑證的公開金鑰。即使主機嘗試使用裝置信任憑證存放區允許的憑證進行驗證,如果主機的憑證鏈結中沒有任何公開金鑰,驗證就會失敗,且無法建立安全通訊。

如果使用相同主機名稱多次呼叫這個方法,系統會覆寫先前為該主機設定的固定項目。

如要進一步瞭解公開金鑰固定,請參閱 RFC 7469

參數
String hostName

要釘選公開金鑰的主機名稱。如果主機名稱只包含數字和半形句號,系統會視為無效。

Set<byte[]> pinsSha256

一組圖釘。每個固定值都是主機 X.509 憑證主體公開金鑰資訊 (SPKI) 的 DER 編碼 ASN.1 表示法,經過 SHA-256 加密雜湊處理後的值。使用 Certificate.getPublicKey()Key.getEncoded() 取得 SPKI 的 DER 編碼 ASN.1 表示法。雖然這個方法並未強制提供備用 PIN 碼 (可在遺失主要私密金鑰時使用),但強烈建議您提供。

boolean includeSubdomains

指出是否應將固定政策套用至 hostName 的子網域。

Date expirationDate

指定 PIN 碼的到期日。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

擲回
java.lang.NullPointerException

如果任何輸入參數是 null

java.lang.IllegalArgumentException

如果指定的主機名稱無效,或 pinsSha256 包含的位元組陣列並非有效的 SHA-256 雜湊。

addQuicHint

public CronetEngine.Builder addQuicHint(String host, int port, int alternatePort)

新增 host 支援 QUIC 的提示。請注意,如要利用工作階段間的 0-RTT 連線建立功能,必須使用 enableHttpCache (HTTP_CACHE_DISK)。

參數
String host

支援 QUIC 的伺服器主機名稱。

int port

支援 QUIC 的伺服器主機。

int alternatePort

QUIC 使用的替代連接埠。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

build

public CronetEngine build()

使用這個建構工具的設定建構 CronetEngine

傳回
CronetEngine

建構 CronetEngine

enableBrotli

public CronetEngine.Builder enableBrotli(boolean value)

設定是否啟用 Brotli 壓縮功能。如果啟用,系統會在 Accept-Encoding 要求標頭中宣傳 Brotli。預設為停用。

參數
boolean value

true 啟用 Brotli,false 停用。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

enableHttp2

public CronetEngine.Builder enableHttp2(boolean value)

設定是否啟用 HTTP/2 通訊協定。預設為啟用。

參數
boolean value

true 啟用 HTTP/2,false 停用。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

enableHttpCache

public CronetEngine.Builder enableHttpCache(int cacheMode, long maxSize)

啟用或停用 HTTP 資料和其他資訊 (例如 QUIC 伺服器資訊) 的快取。

參數
int cacheMode

控管快取資料的位置和類型。必須是 HTTP_CACHE_* 的其中一種格式。

long maxSize

用於快取資料的大小上限 (以位元組為單位,僅供參考,有時可能會超過)。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

enableNetworkQualityEstimator

public CronetEngine.Builder enableNetworkQualityEstimator(boolean value)

啟用網路品質估算器,收集並回報網路堆疊各層的封包往返時間 (RTT) 和下游輸送量測量結果。啟用估算器後,即可使用 addRttListeneraddThroughputListener 新增 RTT 和處理量監聽器,並使用 removeRttListenerremoveThroughputListener 移除監聽器。只有在啟用估算器時,估算器才會使用記憶體和 CPU。

參數
boolean value

true 啟用網路品質估算器,false 停用。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

enablePublicKeyPinningBypassForLocalTrustAnchors

public CronetEngine.Builder enablePublicKeyPinningBypassForLocalTrustAnchors(boolean value)

啟用或停用本機信任錨點的公開金鑰固定繞過功能。強烈建議不要停用本機信任錨點的繞過功能,因為這可能會禁止應用程式與已釘選的主機通訊。舉例來說,使用者可能想變更裝置 Proxy 設定,並將 Proxy 憑證新增至本機信任錨點清單,藉此透過啟用 SSL 的 Proxy 傳送所有流量。停用繞過功能後,應用程式很可能無法將任何流量傳送至已釘選的主機。詳情請參閱 https://www.chromium.org/Home/chromium-security/security-faq 的「How does key pinning interact with local proxies and filters?」一節

參數
boolean value

true 啟用略過功能,false 停用略過功能。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

enableQuic

public CronetEngine.Builder enableQuic(boolean value)

設定是否啟用 QUIC 通訊協定。預設為啟用。如果啟用 QUIC,系統會將包含應用程式名稱和 Cronet 版本的 QUIC User Agent Id 傳送至伺服器。

參數
boolean value

true 啟用 QUIC,false 停用。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

getDefaultUserAgent

public String getDefaultUserAgent()

建構 User-Agent 字串,包括應用程式名稱和版本、系統建構版本、型號和 ID,以及 Cronet 版本。

傳回
String

使用者代理程式字串。

setConnectionMigrationOptions

@ConnectionMigrationOptions.Experimental
public CronetEngine.Builder setConnectionMigrationOptions(
    ConnectionMigrationOptions.Builder connectionMigrationOptionsBuilder
)

setConnectionMigrationOptions

@ConnectionMigrationOptions.Experimental
public CronetEngine.Builder setConnectionMigrationOptions(
    ConnectionMigrationOptions connectionMigrationOptions
)

設定連線遷移作業的行為。詳情請參閱 ConnectionMigrationOptionsConnectionMigrationOptions.Builder 個別方法的說明文件。

只有在啟用 enableQuic 時才適用。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

setDnsOptions

@DnsOptions.Experimental
public CronetEngine.Builder setDnsOptions(DnsOptions dnsOptions)

設定主機名稱查詢的行為。詳情請參閱 DnsOptionsDnsOptions.Builder 個別方法的說明文件。

只有在啟用 enableQuic 時才適用。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

setLibraryLoader

public CronetEngine.Builder setLibraryLoader(CronetEngine.Builder.LibraryLoader loader)

設定用於載入原生程式庫的 LibraryLoader。如未設定,系統會使用 loadLibrary 載入程式庫。

參數
CronetEngine.Builder.LibraryLoader loader

LibraryLoader,用於載入原生資料庫。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

setProxyOptions

public CronetEngine.Builder setProxyOptions(@NonNull ProxyOptions proxyOptions)

設定 Proxy 行為。這會以不同方式影響連線建立、UrlRequestBidirectionalStream。詳情請參閱 Proxy 的說明文件。

請勿將此與使用者、某些企業設定檔設定,或 (最有可能) 某些網路自動設定 (例如 Web Proxy Auto-Discovery Protocol) 所設定的 Proxy 設定混淆。這通常稱為「系統」Proxy 設定。如果有的話,通常必須遵守系統 Proxy 設定,才能取得本機和/或網際網路連線。CronetEngine 會在內部處理系統 Proxy 設定。

透過這個 API 定義的 Proxy 設定稱為「應用程式」Proxy 設定。應用程式和系統的 Proxy 設定是分開的,而且最重要的是,兩者不同。目前應用程式和系統 Proxy 設定互斥:指定 ProxyOptions 會覆寫系統 Proxy 設定 (如有)。在某些情況下,如果系統有 Proxy 設定,這可能會導致連線問題。在這種情況下,除非 ProxyOptions 已設定最終的null備援,否則使用者可能無法存取網際網路。請參閱ProxyOptions說明文件。

參數
@NonNull ProxyOptions proxyOptions

用於 UrlRequest、BiridirectionalStream 和這個建構工具所建立 CronetEngine 建立的連線的 ProxyOptions。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

擲回
java.lang.UnsupportedOperationException

如果使用的 Cronet 實作版本過舊,不支援 ProxyOptions。

setQuicOptions

@QuicOptions.Experimental
public CronetEngine.Builder setQuicOptions(QuicOptions.Builder quicOptionsBuilder)
另請參閱
setQuicOptions

setQuicOptions

@QuicOptions.Experimental
public CronetEngine.Builder setQuicOptions(QuicOptions quicOptions)

設定使用 QUIC 時的 Cronet 行為。詳情請參閱 QuicOptionsQuicOptions.Builder 個別方法的說明文件。

只有在啟用 enableQuic 時才適用。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

setStoragePath

public CronetEngine.Builder setStoragePath(String value)

設定 HTTP 快取和 Cookie 儲存空間的目錄。目錄必須存在。

注意:請勿同時使用多個 CronetEngine 的相同儲存目錄。儲存空間目錄的存取權不支援多個 CronetEngine 同時存取。

參數
String value

現有目錄的路徑。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

setThreadPriority

public CronetEngine.Builder setThreadPriority(int priority)

設定 Cronet 內部執行緒的執行緒優先順序。

參數
int priority

Cronet 內部執行緒的執行緒優先順序。Linux 優先順序等級,從 -20 (排程優先順序最高) 到 19 (排程優先順序最低)。如要進一步瞭解值,請參閱 setThreadPriorityTHREAD_PRIORITY_* 值。

傳回
CronetEngine.Builder

建構工具,方便鏈結。

setUserAgent

public CronetEngine.Builder setUserAgent(String userAgent)

覆寫所有要求的使用者代理程式標頭。明確設定的 User-Agent 標頭 (使用 addHeader 設定) 會覆寫使用這個函式設定的值。

參數
String userAgent

用於所有要求的使用者代理程式字串。

傳回
CronetEngine.Builder

建構工具,方便鏈結。