2017-11-06 18 views
1

ProxySelectorクラスの仕組みを理解しようとしています。私の現在のコードは次のようになります。ProxySelector:各URLの異なるプロキシ

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

私はproxySelector.select(uri);を呼び出すときに、これはそれぞれのURIのためのプロキシのリストを返すために仮定されていることを理解しています。しかし、URIごとにプロキシを設定する方法はわかりません。

setDefault()メソッドを使用してデフォルトのプロキシを設定できることはわかっていますが、これは特定のURIのプロキシではなく、システム全体のプロキシを設定すると理解しています。 など)と別のプロキシをURL B(http://ebay.comなど)に設定して、システムに自動的に正しいプロキシを選択させるにはどうすればよいですか?それは対応するURLに接続する時間?

+0

参照:https://stackoverflow.com/questions/34319679/using-proxy-with-httpcomponentsclienthttprequestfactory-for-resttemplate/34432952#34432952 –

+0

ありがとうございました。だから基本的には、 "選択"メソッドで選択されたプロキシのロジックを実装する必要がありますか? System.setProperty()を使用して実際にプロキシのURLに接続する方法は? –

答えて

2
  1. オーバーライドあなたが正しいプロキシまたはURIのためのプロキシのリストを選択するためのカスタムロジックを実装ProxySelector.select(URI uri)方法。

  2. ProxySelector.setDefault(customProxySelector)を呼び出すことで、カスタム、ProxySelectorをシステムワイドに設定するか、

    URLConnectionの任意のサブクラスではProxySelector、例えばを使用します。

    URLConnection conn = url.openConnection(); 
    
  3. か、例えば春RestTemplateは、リモートURIを呼び出すために使用しようとしているフレームワークの設定:

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

それをカスタムロジックが適切なプロキシを決定しない場合に備えて、カスタムProxySelectorのデフォルト設定に戻すことをお勧めします。select(URI uri)ウリ。

ProxySelector exampleの私の他の答えを見てください。

ネットワークとプロキシがよくJava Networking and Proxies項4のProxySelector)とProxySelector Java docsに説明します。

+0

私はeBay API sdkと連携してProxySelectorクラスを使用しようとしています。プロキシを設定すると、eBayへのすべての呼び出しがプロキシ経由でルーティングされることを保証できますか? –

+0

私の推測ははいですが、私はebay APIの経験がありません。私はhttp://developer.ebay.com/DevZone/javasdk-jaxb/docs/readme.htm#631でカスタム 'ProxySelector'を紹介しています。どちらのソースコード(https://github.com/prestonvanloon/ebaysdkcore/blob/master/src/main/java/com/ebay/sdk/util/SdkProxySelector.java)を信頼できるかは、 URLごとに1つのプロキシ –

関連する問題