ProxyConfig.Builder
public final class ProxyConfig.Builder
ProxyConfig builder. Use addProxyRule or addProxyRule to add proxy rules. Use addBypassRule to add bypass rules. Use 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 |
|---|
Builder()Create an empty ProxyConfig Builder. |
Builder(@NonNull ProxyConfig proxyConfig)Create a ProxyConfig Builder from an existing ProxyConfig object. |
Public methods |
|
|---|---|
@NonNull ProxyConfig.Builder |
addBypassRule(@NonNull String bypassRule)Adds a new bypass rule that describes URLs that should skip proxy override settings and make a direct connection instead. |
@NonNull ProxyConfig.Builder |
Adds a proxy rule so URLs are connected to directly instead of using a proxy server. |
@NonNull ProxyConfig.Builder |
Adds a proxy rule so URLs that match the scheme filter are connected to directly instead of using a proxy server. |
@NonNull ProxyConfig.Builder |
addProxyRule(@NonNull String proxyUrl)Adds a proxy to be used for all URLs. |
@NonNull ProxyConfig.Builder |
addProxyRule(@NonNull String proxyUrl, @NonNull String schemeFilter)This does everything that |
@NonNull ProxyConfig |
build()Builds the current rules into a ProxyConfig object. |
@NonNull ProxyConfig.Builder |
Hostnames without a period in them (and that are not IP literals) will skip proxy settings and be connected to directly instead. |
@NonNull ProxyConfig.Builder |
By default, certain hostnames implicitly bypass the proxy if they are link-local IPs, or localhost addresses. |
@NonNull ProxyConfig.Builder |
@RequiresFeature(name = WebViewFeature.PROXY_OVERRIDE_REVERSE_BYPASS, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")Reverse the bypass list. |
Public constructors
Builder
public Builder(@NonNull ProxyConfig proxyConfig)
Create a ProxyConfig Builder from an existing ProxyConfig object.
Public methods
addBypassRule
public @NonNull ProxyConfig.Builder addBypassRule(@NonNull String bypassRule)
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.
| Returns | |
|---|---|
@NonNull ProxyConfig.Builder |
This Builder object |
addDirect
public @NonNull ProxyConfig.Builder addDirect()
Adds a proxy rule so URLs are connected to directly instead of using a proxy server.
| Returns | |
|---|---|
@NonNull ProxyConfig.Builder |
This Builder object |
addDirect
public @NonNull ProxyConfig.Builder addDirect(@NonNull String schemeFilter)
Adds a proxy rule so URLs that match the scheme filter are connected to directly instead of using a proxy server.
| Returns | |
|---|---|
@NonNull ProxyConfig.Builder |
This Builder object |
addProxyRule
public @NonNull ProxyConfig.Builder addProxyRule(@NonNull String proxyUrl)
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] |
| Returns | |
|---|---|
@NonNull ProxyConfig.Builder |
This Builder object |
addProxyRule
public @NonNull ProxyConfig.Builder addProxyRule(@NonNull String proxyUrl, @NonNull String schemeFilter)
This does everything that addProxyRule does, but only applies to URLs using schemeFilter. Scheme filter must be one of MATCH_HTTP, MATCH_HTTPS or MATCH_ALL_SCHEMES.
| Returns | |
|---|---|
@NonNull ProxyConfig.Builder |
This Builder object |
build
public @NonNull ProxyConfig build()
Builds the current rules into a ProxyConfig object.
| Returns | |
|---|---|
@NonNull ProxyConfig |
The ProxyConfig object represented by this Builder |
bypassSimpleHostnames
public @NonNull ProxyConfig.Builder bypassSimpleHostnames()
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.
| Returns | |
|---|---|
@NonNull ProxyConfig.Builder |
This Builder object |
removeImplicitRules
public @NonNull ProxyConfig.Builder removeImplicitRules()
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.
| Returns | |
|---|---|
@NonNull ProxyConfig.Builder |
This Builder object |
setReverseBypassEnabled
@RequiresFeature(name = WebViewFeature.PROXY_OVERRIDE_REVERSE_BYPASS, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
public @NonNull ProxyConfig.Builder setReverseBypassEnabled(boolean reverseBypass)
Reverse the bypass list.
The default value is false, in which case all URLs will use proxy settings except the ones in the bypass list, which will be connected to directly instead.
If set to true, then only URLs in the bypass list will use these proxy settings, and all other URLs will be connected to directly.
Use addBypassRule to add bypass rules.
This method should only be called if isFeatureSupported returns true for PROXY_OVERRIDE_REVERSE_BYPASS.
| Returns | |
|---|---|
@NonNull ProxyConfig.Builder |
This Builder object |