38

http.proxyHost と http.proxyPort の設定は、httpClient には役に立たないことがわかりました。コードを変更せずに、環境変数または VM 引数などによって httpClient がプロキシを使用するように強制するにはどうすればよいですか?

4

5 に答える 5

22

https://issues.apache.org/jira/browse/HTTPCLIENT-1128

SystemDefaultHttpClient を ver に追加しました。4.2

http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/SystemDefaultHttpClient.htmlを参照してください。

于 2012-11-27T13:06:47.393 に答える
20

HTTP クライアント (私の場合は v 4.5.1) は、次のようにシステム プロキシを使用できます。

HttpClient httpClient = HttpClientBuilder.create().useSystemProperties().build();
//or 
HttpClient httpClient = HttpClients.createSystem();
于 2016-04-19T09:37:24.147 に答える
6

HttpClientメソッドを使用して、自分でプロキシを強制できますclient.getHostConfiguration().setProxy(host, port)。私は通常、ラッパー クラスを作成しHttpClient、このクラスを初期化するときに、任意のソース (環境変数 ...) からプロキシをセットアップします。

java.net.ProxySelector.setDefault(new MyProxySelector())プロキシを直接設定できない状況で使用しましたHttpClient。独自の ProxySelector クラスを実装する必要があり、select メソッドは要求された URI に基づいてプロキシを選択します。url->proxy マッピングを作成して、特定の URI アドレスを必要なプロキシに構成するか、要求されたすべての URI に対してグローバルに 1 つのプロキシを返すことができます。

HttpClient ソース コードでわかるように、プロキシのみの setProxy メソッドを構成する方法は他にありません。commons-httpclient-3.1 を使用しています。

于 2011-03-02T09:25:56.293 に答える
0

私の知る限り、コードを変更せずにこれを管理することはできませんが、独自の接続マネージャーを使用することでネイティブの動作に近づけることができます。ProxySelector が URL のスキームを https:// から socket:// に変更するを参照してください。

于 2013-01-28T13:55:46.990 に答える
-14

これは役に立ちますか?

System.setProperty("https.proxyHost", proxy_host);
System.setProperty("http.proxyHost", proxy_host);
System.setProperty("https.proxyPort", proxy_port);
System.setProperty("http.proxyPort", proxy_port);

またはもちろん、コマンドラインから同じプロパティを渡すこともできます

于 2011-03-02T08:42:37.157 に答える