代理

public final class Proxy


表示可供 CronetEngine 使用的代理。

HTTP 请求通过代理发送的方式取决于多种因素。例如:所用代理的类型、所用 HTTP 版本、请求是否发送到具有 http 或 https URI scheme 的目标。此外,是否通过代理建立隧道也取决于这些因素。

摘要

嵌套类型

public abstract class Proxy.HttpConnectCallback

控制通过 HTTP CONNECT 建立的隧道。

在调用 onResponseReceived 时可执行的操作。

public abstract class Proxy.HttpConnectCallback.Request implements AutoCloseable

表示正在向代理服务器发送的 HTTP CONNECT 请求。

@Retention(value = RetentionPolicy.SOURCE)
@IntDef(value = )
public annotation Proxy.Scheme

定义代理时支持的方案。

常量

static final int

与代理本身建立明文连接。

static final int

建立与代理本身的安全连接。

公共方法

static @NonNull Proxy
createHttpProxy(
    @Proxy.Scheme int scheme,
    @NonNull String host,
    @IntRange(from = 0, to = 65535) int port,
    @NonNull Executor executor,
    @NonNull Proxy.HttpConnectCallback callback
)

构建 HTTP 代理。

常量

SCHEME_HTTP

public static final int SCHEME_HTTP = 0

与代理本身建立明文连接。

SCHEME_HTTPS

public static final int SCHEME_HTTPS = 1

建立与代理本身的安全连接。

公共方法

createHttpProxy

public static @NonNull Proxy createHttpProxy(
    @Proxy.Scheme int scheme,
    @NonNull String host,
    @IntRange(from = 0, to = 65535) int port,
    @NonNull Executor executor,
    @NonNull Proxy.HttpConnectCallback callback
)

构建 HTTP 代理。

通过 HTTP 代理发送 HTTP 请求时,是否调用 callback 取决于目标 URI 方案:

  • 对于具有 https URI scheme 的目标,CronetEngine 会通过代理建立隧道。隧道是通过 HTTP CONNECT 请求建立的。在这种情况下,将调用 callback 来控制用于建立隧道的 HTTP CONNECT 请求。
  • 对于具有 http URI scheme 的目标,CronetEngine 会向代理发送包含目标完整 URI 的 HTTP 请求。在这种情况下,系统不会调用 callback
参数
@Proxy.Scheme int scheme

hostport 一起标识此代理的 Scheme

@NonNull String host

非空主机,与 schemeport 一起标识此代理。

@IntRange(from = 0, to = 65535) int port

schemehost 一起标识此代理的端口。其值必须在 [0, 65535] 范围内。

@NonNull Executor executor

将调用 callback 的执行程序。

@NonNull Proxy.HttpConnectCallback callback

回调,用于与 CronetEngine 为通过代理建立隧道而发送的 HTTP CONNECT 请求及其响应进行交互。