Support for dynamic proxy configuration at the HTTP protocol level #3593
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
The existing
proxy(...)
andnoProxy()
methods are static, applying the same configuration to all requests. In scenarios where proxy behavior needs to change dynamically based on the request (e.g., host-specific proxies, conditional proxy usage), this static approach is insufficient.The
proxyWhen(...)
method fills this gap by allowing developers to provide a function that resolves proxy settings dynamically during request execution.Description
proxyWhen(BiConsumer<HttpClientConfig, ? super ProxyProvider.TypeSpec>)
method toHttpClient
.HttpClientConfig
function.proxyWhen(...)
evaluates the configuration function for each HTTP request, allowing fine-grained control over proxy settings.proxyWhen(...)
is used, any static proxy configurations applied viaproxy(...)
ornoProxy()
will be ignored.deferredConfig
to set theproxyProvider
at theHttpClientConnect.connect()
stage.Backward Compatibility
proxyWhen(...)
method is additive and does not interfere with existing static configurations unless explicitly used.proxy(...)
andnoProxy()
) remain unchanged and fully functional.Related Issue