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 | |
---|---|
<init>() 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 |
Adds a proxy rule so URLs that match the scheme filter are connected to directly instead of using a proxy server. |
ProxyConfig.Builder |
Adds a proxy rule so URLs are connected to directly instead of using a proxy server. |
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 |
ProxyConfig |
build() 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. These can be URLs or IP addresses. 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 |
Return | |
---|---|
ProxyConfig.Builder |
This Builder object |
addDirect
@NonNull fun addDirect(@NonNull schemeFilter: String): ProxyConfig.Builder
Adds a proxy rule so URLs that match the scheme filter are connected to directly instead of using a proxy server.
Parameters | |
---|---|
schemeFilter |
String: Scheme filter |
Return | |
---|---|
ProxyConfig.Builder |
This Builder object |
addDirect
@NonNull fun addDirect(): ProxyConfig.Builder
Adds a proxy rule so URLs are connected to directly instead of using a proxy server.
Return | |
---|---|
ProxyConfig.Builder |
This Builder object |
addProxyRule
@NonNull fun addProxyRule(@NonNull proxyUrl: String): ProxyConfig.Builder
Adds a proxy to be used for all URLs. This method can be called multiple times to add multiple rules. Additional rules have decreasing precedence.
Proxy is 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 |
Return | |
---|---|
ProxyConfig.Builder |
This Builder object |
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 |
Return | |
---|---|
ProxyConfig.Builder |
This Builder object |
build
@NonNull fun build(): ProxyConfig
Builds the current rules into a ProxyConfig object.
Return | |
---|---|
ProxyConfig |
The ProxyConfig object represented by this Builder |
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.
Return | |
---|---|
ProxyConfig.Builder |
This Builder object |
removeImplicitRules
@NonNull fun removeImplicitRules(): 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.
Return | |
---|---|
ProxyConfig.Builder |
This Builder object |