CronetEngine.Builder

class CronetEngine.Builder


用于 CronetEngine 的构建器,可实现 CronetEngine 的运行时配置。配置选项在构建器上设置,然后调用 build 以创建 CronetEngine。

摘要

嵌套类型

此类已弃用。

在 minSDK <= 23 的情况下,System.loadLibrary 不可靠,因此使用此方法来提供替代的、更可靠的加载程序。

常量

const Int

用于停用 HTTP 缓存的设置。

const Int

用于启用磁盘缓存(包括 HTTP 数据)的设置。

const Int

用于启用磁盘缓存的设置,不包括 HTTP 数据。

const Int

用于启用内存中 HTTP 缓存(包括 HTTP 数据)的设置。

公共构造函数

Builder(context: Context!)

构建一个 Builder 对象,以便于创建 CronetEngine。

公共函数

CronetEngine.Builder!
addPublicKeyPins(
    hostName: String!,
    pinsSha256: (Mutable)Set<ByteArray!>!,
    includeSubdomains: Boolean,
    expirationDate: Date!
)

为指定主机固定一组公钥。

CronetEngine.Builder!
addQuicHint(host: String!, port: Int, alternatePort: Int)

添加了 host 支持 QUIC 的提示。

CronetEngine!

使用此构建器的配置构建 CronetEngine。

CronetEngine.Builder!

设置是否启用 Brotli 压缩。

CronetEngine.Builder!

设置是否启用 HTTP/2 协议。

CronetEngine.Builder!
enableHttpCache(cacheMode: Int, maxSize: Long)

启用或停用 HTTP 数据和其他信息(例如 QUIC 服务器信息)的缓存。

CronetEngine.Builder!

启用网络质量估算器,该估算器会收集并报告网络堆栈各个层级的往返时间 (RTT) 和下游吞吐量测量结果。

CronetEngine.Builder!

针对本地信任锚点启用或停用公钥锁定绕过。

CronetEngine.Builder!

设置是否启用 QUIC 协议。

String!

构建 User-Agent 字符串,包括应用名称和版本、系统 build 版本、型号和 ID 以及 Cronet 版本。

CronetEngine.Builder!
CronetEngine.Builder!

配置连接迁移的行为。

CronetEngine.Builder!

配置主机名查找的行为。

CronetEngine.Builder!
CronetEngine.Builder!

此函数已弃用。

在 minSDK <= 23 的情况下,System.loadLibrary 不可靠,因此使用此方法来提供替代的、更可靠的加载程序。

CronetEngine.Builder!

配置代理行为。

CronetEngine.Builder!
CronetEngine.Builder!

配置使用 QUIC 时 Cronet 的行为。

CronetEngine.Builder!

设置 HTTP 缓存和 Cookie 存储的目录。

CronetEngine.Builder!

此函数已弃用。

在 Cronet 的新版本中,此方法不执行任何操作。

CronetEngine.Builder!
setUserAgent(userAgent: String!)

替换所有请求的 User-Agent 标头。

受保护的房源

JSONObject!

实验性选项的 JSON 表示形式。

常量

HTTP_CACHE_DISABLED

const val HTTP_CACHE_DISABLED = 0: Int

用于停用 HTTP 缓存的设置。某些数据可能仍会暂时存储在内存中。已传递给 enableHttpCache。

HTTP_CACHE_DISK

const val HTTP_CACHE_DISK = 3: Int

用于启用磁盘缓存(包括 HTTP 数据)的设置。必须先调用 setStoragePath,然后才能将此常量传递给 enableHttpCache。

HTTP_CACHE_DISK_NO_HTTP

const val HTTP_CACHE_DISK_NO_HTTP = 2: Int

用于启用磁盘缓存的设置,不包括 HTTP 数据。必须先调用 setStoragePath,然后才能将此常量传递给 enableHttpCache。

HTTP_CACHE_IN_MEMORY

const val HTTP_CACHE_IN_MEMORY = 1: Int

用于启用内存中 HTTP 缓存(包括 HTTP 数据)的设置。已传递给 enableHttpCache。

公共构造函数

Builder

Builder(context: Context!)

构建一个 Builder 对象,以便于创建 CronetEngine。默认配置会启用 HTTP/2 和 QUIC,但停用 HTTP 缓存。

参数
context: Context!

Android Context,由 Builder 用于检索应用上下文。系统将仅保留对应用上下文的引用,以避免不必要地延长 context 的生命周期。

公共函数

addPublicKeyPins

fun addPublicKeyPins(
    hostName: String!,
    pinsSha256: (Mutable)Set<ByteArray!>!,
    includeSubdomains: Boolean,
    expirationDate: Date!
): CronetEngine.Builder!

为指定主机固定一组公钥。通过固定一组公钥 pinsSha256,与 hostName 的通信需要使用公钥来自固定组的证书进行身份验证。应用可以固定根证书、任何中间证书或最终实体证书的公钥。如果主机证书链中不存在任何公钥,即使主机尝试使用设备的可信证书存储区允许的证书进行身份验证,身份验证也会失败,并且无法建立安全通信。

使用相同的主机名多次调用此方法会替换之前为该主机设置的 pin。

如需详细了解公钥固定,请参阅 RFC 7469。

参数
hostName: String!

应固定到的主机的名称。仅包含数字和英文句点字符的主机名会被视为无效。

pinsSha256: (Mutable)Set<ByteArray!>!

一组固定。每个 pin 都是主机 X.509 证书的 Subject Public Key Info (SPKI) 的 DER 编码 ASN.1 表示形式的 SHA-256 加密哈希。使用 Certificate.getPublicKey() 和 Key.getEncoded() 获取 SPKI 的 DER 编码 ASN.1 表示形式。虽然该方法不强制要求提供在主私钥控制权丢失时可使用的备用 PIN 码,但强烈建议提供一个。

includeSubdomains: Boolean

表示是否应将固定政策应用于 hostName 的子网域。

expirationDate: Date!

指定 PIN 码的失效日期。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

抛出
java.lang.NullPointerException

如果任何输入参数为 null。

java.lang.IllegalArgumentException

如果给定的主机名无效或 pinsSha256 包含的字节数组不表示有效的 SHA-256 哈希值。

addQuicHint

fun addQuicHint(host: String!, port: Int, alternatePort: Int): CronetEngine.Builder!

添加了 host 支持 QUIC 的提示。请注意,需要 enableHttpCache (HTTP_CACHE_DISK) 才能利用会话之间的 0-RTT 连接建立。

参数
host: String!

支持 QUIC 的服务器的主机名。

port: Int

支持 QUIC 的服务器的主机。

alternatePort: Int

用于 QUIC 的备用端口。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

build

fun build(): CronetEngine!

使用此构建器的配置构建 CronetEngine。

返回
CronetEngine!

建造于 CronetEngine。

enableBrotli

fun enableBrotli(value: Boolean): CronetEngine.Builder!

设置是否启用 Brotli 压缩。如果启用,系统将在 Accept-Encoding 请求标头中宣传 Brotli。默认值为 disabled。

参数
value: Boolean

true 表示启用 Brotli,false 表示停用。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

enableHttp2

fun enableHttp2(value: Boolean): CronetEngine.Builder!

设置是否启用 HTTP/2 协议。默认值为 enabled。

参数
value: Boolean

true 表示启用 HTTP/2,false 表示停用。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

enableHttpCache

fun enableHttpCache(cacheMode: Int, maxSize: Long): CronetEngine.Builder!

启用或停用 HTTP 数据和其他信息(例如 QUIC 服务器信息)的缓存。

参数
cacheMode: Int

控制缓存数据的位置和类型。必须为 HTTP_CACHE_* 之一。

maxSize: Long

用于缓存数据的最大大小(以字节为单位)(建议值,有时可能会超出)。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

enableNetworkQualityEstimator

fun enableNetworkQualityEstimator(value: Boolean): CronetEngine.Builder!

启用网络质量估算器,该估算器会收集并报告网络堆栈各个层级的往返时间 (RTT) 和下游吞吐量测量结果。启用估算器后,可以使用 addRttListener 和 addThroughputListener 添加 RTT 和吞吐量监听器,并使用 removeRttListener 和 removeThroughputListener 移除监听器。估算器仅在启用时使用内存和 CPU。

参数
value: Boolean

true 表示启用网络质量估算器,false 表示停用。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

enablePublicKeyPinningBypassForLocalTrustAnchors

fun enablePublicKeyPinningBypassForLocalTrustAnchors(value: Boolean): CronetEngine.Builder!

为本地信任锚启用或停用公钥锁定绕过。强烈建议不要停用本地信任锚点的绕过功能,因为这可能会禁止应用与固定的主机进行通信。例如,用户可能希望通过更改设备代理设置并将代理证书添加到本地信任锚点列表中,来通过启用 SSL 的代理发送所有流量。停用绕过功能后,应用很可能无法向固定的主机发送任何流量。如需了解详情,请访问 https://www.chromium.org/Home/chromium-security/security-faq,查看“密钥固定如何与本地代理和过滤器互动?”

参数
value: Boolean

true 表示启用绕过,false 表示停用。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

enableQuic

fun enableQuic(value: Boolean): CronetEngine.Builder!

设置是否启用 QUIC 协议。默认值为 enabled。如果启用了 QUIC,则包含应用名称和 Cronet 版本的 QUIC User Agent ID 会发送到服务器。

参数
value: Boolean

true 表示启用 QUIC,false 表示停用。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

getDefaultUserAgent

fun getDefaultUserAgent(): String!

构建 User-Agent 字符串,包括应用名称和版本、系统 build 版本、型号和 ID 以及 Cronet 版本。

返回
String!

用户代理字符串。

setConnectionMigrationOptions

@ConnectionMigrationOptions.Experimental
fun setConnectionMigrationOptions(
    connectionMigrationOptionsBuilder: ConnectionMigrationOptions.Builder!
): CronetEngine.Builder!

setConnectionMigrationOptions

@ConnectionMigrationOptions.Experimental
fun setConnectionMigrationOptions(
    connectionMigrationOptions: ConnectionMigrationOptions!
): CronetEngine.Builder!

配置连接迁移的行为。如需了解详情,请参阅 ConnectionMigrationOptions 的文档和 ConnectionMigrationOptions.Builder 的各个方法。

仅在 enableQuic 已启用的情况下相关。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

setDnsOptions

@DnsOptions.Experimental
fun setDnsOptions(dnsOptions: DnsOptions!): CronetEngine.Builder!

配置主机名查找的行为。如需了解详情,请参阅 DnsOptions 的文档和 DnsOptions.Builder 的各个方法。

仅在 enableQuic 已启用的情况下相关。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

setLibraryLoader

fun setLibraryLoader(loader: CronetEngine.Builder.LibraryLoader!): CronetEngine.Builder!

设置用于加载原生库的 LibraryLoader。如果未设置,系统将使用 loadLibrary 加载库。

参数
loader: CronetEngine.Builder.LibraryLoader!

LibraryLoader 用于加载原生库。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

setProxyOptions

fun setProxyOptions(proxyOptions: ProxyOptions): CronetEngine.Builder!

配置代理行为。这会以不同的方式影响连接建立、UrlRequest 和 BidirectionalStream。如需了解详情,请参阅 Proxy 的文档。

请勿将此情况与以下情况混淆:用户设置的代理配置;某些企业资料配置;或(最有可能)某些网络自动配置(例如 Web 代理自动发现协议)。这通常称为“系统”代理配置。如果存在,尊重系统代理配置通常是获得本地和/或互联网连接的必要条件。CronetEngine 已在内部处理系统代理配置。

通过此 API 定义的代理配置称为“应用”代理配置。应用代理配置和系统代理配置是分开的,最重要的是,两者有所不同。目前,应用和系统代理配置是互斥的:如果指定了 ProxyOptions,则会覆盖系统代理配置(如果存在)。在存在系统代理配置的某些情况下,这可能会导致连接问题。在这种情况下,除非 ProxyOptions 已配置为最终的 null 回退,否则用户可能最终无法访问互联网。请参阅 ProxyOptions 文档。

参数
proxyOptions: ProxyOptions

将用于 UrlRequest、BiridirectionalStream 和由此构建器创建的 CronetEngine 建立的连接的 ProxyOptions。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

抛出
java.lang.UnsupportedOperationException

如果所使用的 Cronet 实现版本过旧,不支持 ProxyOptions。

setQuicOptions

@QuicOptions.Experimental
fun setQuicOptions(quicOptionsBuilder: QuicOptions.Builder!): CronetEngine.Builder!
另请参阅
setQuicOptions

setQuicOptions

@QuicOptions.Experimental
fun setQuicOptions(quicOptions: QuicOptions!): CronetEngine.Builder!

配置使用 QUIC 时 Cronet 的行为。如需了解详情,请参阅 QuicOptions 的文档和 QuicOptions.Builder 的各个方法。

仅在 enableQuic 已启用的情况下相关。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

setStoragePath

fun setStoragePath(value: String!): CronetEngine.Builder!

设置 HTTP 缓存和 Cookie 存储的目录。相应目录必须存在。

注意:请勿同时使用多个 CronetEngine 将数据存储到同一存储目录。对存储目录的访问不支持多个 CronetEngine 的并发访问。

参数
value: String!

现有目录的路径。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

setThreadPriority

fun setThreadPriority(priority: Int): CronetEngine.Builder!

设置 Cronet 内部线程的线程优先级。

参数
priority: Int

Cronet 内部线程的线程优先级。Linux 优先级,从 -20(最高调度优先级)到 19(最低调度优先级)。如需详细了解值,请参阅 setThreadPriority 和 THREAD_PRIORITY_* 值。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

setUserAgent

fun setUserAgent(userAgent: String!): CronetEngine.Builder!

替换所有请求的 User-Agent 标头。明确设置的 User-Agent 标头(使用 addHeader 设置)会替换使用此函数设置的值。

参数
userAgent: String!

要用于所有请求的 User-Agent 字符串。

返回
CronetEngine.Builder!

构建器,以方便进行链式调用。

受保护的属性

mParsedExperimentalOptions

protected val mParsedExperimentalOptions: JSONObject!

实验性选项的 JSON 表示形式。