Builder

class Builder
kotlin.Any
   ↳ androidx.webkit.ProxyConfig.Builder

ProxyConfig builder. Use Builder#addProxyRule(String) or Builder#addProxyRule(String, String) to add proxy rules. Use Builder#addBypassRule(String) to add bypass rules. Use Builder#build() to build this into a ProxyConfig object.

Note: applying a ProxyConfig with no rules will cause all connections to be made directly.

Summary

Public constructors

Create an empty ProxyConfig Builder.

<init>(@NonNull proxyConfig: ProxyConfig)

Create a ProxyConfig Builder from an existing ProxyConfig object.

Public methods

ProxyConfig.Builder
addBypassRule(@NonNull bypassRule: String)

Adds a new bypass rule that describes URLs that should skip proxy override settings and make a direct connection instead.

ProxyConfig.Builder
addProxyRule(@NonNull proxyUrl: String)

Adds a proxy to be used for all URLs.

ProxyConfig.Builder
addProxyRule(@NonNull proxyUrl: String, @NonNull schemeFilter: String)

This does everything that Builder#addProxyRule(String) does, but only applies to URLs using schemeFilter.

ProxyConfig

Builds the current rules into a ProxyConfig object.

ProxyConfig.Builder

Hostnames without a period in them (and that are not IP literals) will skip proxy settings and be connected to directly instead.

ProxyConfig.Builder

By default, certain hostnames implicitly bypass the proxy if they are link-local IPs, or localhost addresses.

Public constructors

<init>

Builder()

Create an empty ProxyConfig Builder.

<init>

Builder(@NonNull proxyConfig: ProxyConfig)

Create a ProxyConfig Builder from an existing ProxyConfig object.

Public methods

addBypassRule

@NonNull fun addBypassRule(@NonNull bypassRule: String): ProxyConfig.Builder

Adds a new bypass rule that describes URLs that should skip proxy override settings and make a direct connection instead. Wildcards are accepted. For instance, the rule "*example.com" would mean that requests to "http://example.com" and "www.example.com" would not be directed to any proxy, instead, would be made directly to the origin specified by the URL.

Parameters
bypassRule String: Rule to be added to the exclusion list

addProxyRule

@NonNull fun addProxyRule(@NonNull proxyUrl: String): ProxyConfig.Builder

Adds a proxy to be used for all URLs.

Proxy is either ProxyConfig#DIRECT or a string in the format [scheme://]host[:port]. Scheme is optional, if present must be HTTP, HTTPS or SOCKS and defaults to HTTP. Host is one of an IPv6 literal with brackets, an IPv4 literal or one or more labels separated by a period. Port number is optional and defaults to 80 for HTTP, 443 for HTTPS and 1080 for SOCKS.

The correct syntax for hosts is defined by RFC 3986

Examples:

Scheme Host Port Proxy URL
example.com example.com
https example.com https://example.com
example.com 1111 example.com:1111
https example.com 1111 https://example.com:1111
192.168.1.1 192.168.1.1
192.168.1.1 2020 192.168.1.1:2020
[10:20:30:40:50:60:70:80] [10:20:30:40:50:60:70:80]
Parameters
proxyUrl String: Proxy URL

addProxyRule

@NonNull fun addProxyRule(@NonNull proxyUrl: String, @NonNull schemeFilter: String): ProxyConfig.Builder

This does everything that Builder#addProxyRule(String) does, but only applies to URLs using schemeFilter. Scheme filter must be one of ProxyConfig#MATCH_HTTP, ProxyConfig#MATCH_HTTPS or ProxyConfig#MATCH_ALL_SCHEMES.

Parameters
proxyUrl String: Proxy URL
schemeFilter String: Scheme filter

build

@NonNull fun build(): ProxyConfig

Builds the current rules into a ProxyConfig object.

bypassSimpleHostnames

@NonNull fun bypassSimpleHostnames(): ProxyConfig.Builder

Hostnames without a period in them (and that are not IP literals) will skip proxy settings and be connected to directly instead. Examples: "abc", "local", "some-domain".

Hostnames with a trailing dot are not considered simple by this definition.

subtractImplicitRules

@NonNull fun subtractImplicitRules(): ProxyConfig.Builder

By default, certain hostnames implicitly bypass the proxy if they are link-local IPs, or localhost addresses. For instance hostnames matching any of (non-exhaustive list):

  • localhost
  • *.localhost
  • [::1]
  • 127.0.0.1/8
  • 169.254/16
  • [FE80::]/10

Call this function to override the default behavior and force localhost and link-local URLs to be sent through the proxy.