Ami*_*saf 5 java proxy uri http-proxy proxyselector
我试图了解 ProxySelector 类的工作原理。我当前的代码如下所示:
URI uri = new URI("http://google.com");
proxySelector.select(uri);
Run Code Online (Sandbox Code Playgroud)
据我了解,调用proxySelector.select(uri);此函数时应该返回相应 URI 的代理列表。但我不知道如何为每个 URI 设置代理。
我知道我可以使用该setDefault()方法设置默认代理,但据我了解,这将设置系统范围的代理,而不是特定URI.
我可能在这里遗漏了一些基本点,但如何为网址 A (例如http://google.com)设置一个代理并为网址 B (例如http://ebay.com)设置一个不同的代理,然后让系统每次连接到相应的url时都会自动选择正确的代理?
重写ProxySelector.select(URI uri)方法,您可以在其中实现自定义逻辑来为 URI 选择正确的代理或代理列表。
ProxySelector要么通过调用将新的自定义设置为系统范围ProxySelector.setDefault(customProxySelector)。
的任何子类URLConnection都将使用ProxySelector,例如:
URLConnection conn = url.openConnection();
Run Code Online (Sandbox Code Playgroud)
或者配置您将用来调用远程 URI 的框架,例如 Spring RestTemplate:
HttpRoutePlanner routePlanner = new SystemDefaultRoutePlanner(new MyProxySelector());
HttpComponentsClientHttpRequestFactory clientHttpRequestFactory
= new HttpComponentsClientHttpRequestFactory(
HttpClientBuilder.create()
.setRoutePlanner(routePlanner)
.build());
restTemplate = new RestTemplate(clientHttpRequestFactory);
Run Code Online (Sandbox Code Playgroud)
select(URI uri)如果自定义逻辑无法确定 uri 的合适代理,最好回退到自定义中的默认 ProxySelector 。
请参阅我对ProxySelector 示例的其他回答。
网络和代理在Java 网络和代理 (第 4 段 ProxySelector)和ProxySelector Java 文档中得到了很好的解释。
| 归档时间: |
|
| 查看次数: |
8344 次 |
| 最近记录: |