gpt4 book ai didi

java - ProxySelector:每个 URL 都有不同的代理

转载 作者:行者123 更新时间:2023-12-02 07:41:59 28 4
gpt4 key购买 nike

我试图了解 ProxySelector 类的工作原理。我当前的代码如下所示:

    URI uri = new URI("http://google.com");
proxySelector.select(uri);

据我所知,当调用 proxySelector.select(uri); 时,应该返回相应 URI 的代理列表。但我不知道如何为每个 URI 设置代理。

我知道我可以使用 setDefault() 方法设置默认代理,但据我了解,这将设置系统范围的代理,而不是特定 URI 的代理.

我可能在这里遗漏了一些基本点,但是如何为 url A 设置一个代理(例如 http://google.com )并为 url B 设置不同的代理(例如 http://ebay.com ),然后让系统自动选择每次连接到相应的 url 时代理是否正确?

最佳答案

  1. 覆盖ProxySelector.select(URI uri)方法,您可以在其中实现自定义逻辑来为 URI 选择正确的代理或代理列表。

  2. 设置新的、自定义的 ProxySelector在系统范围内通过调用 ProxySelector.setDefault(customProxySelector) .

    URLConnection 的任何子类将使用ProxySelector ,例如:

    URLConnection conn = url.openConnection();
  3. 或配置您将用来调用远程 URI 的框架,例如 Spring RestTemplate:

    HttpRoutePlanner routePlanner = new SystemDefaultRoutePlanner(new MyProxySelector());

    HttpComponentsClientHttpRequestFactory clientHttpRequestFactory
    = new HttpComponentsClientHttpRequestFactory(
    HttpClientBuilder.create()
    .setRoutePlanner(routePlanner)
    .build());
    restTemplate = new RestTemplate(clientHttpRequestFactory);

在自定义 select(URI uri) 中回退到默认 ProxySelector 是一个很好的做法如果自定义逻辑无法确定 uri 的合适代理。

请参阅我的其他答案 ProxySelector example .

网络和代理在Java Networking and Proxies中有很好的解释。 (第 4 段 ProxySelector)和 ProxySelector Java docs .

关于java - ProxySelector:每个 URL 都有不同的代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47141016/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com