Java で「舞台裏」のプロキシを取得する方法はありますか? http.proxyHost
と で指定したものhttp.proxyPort
。
私が行った場合:
URL url = new URL("http://google.com");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
上記で設定した値を介して自動的に接続します。プロキシ ( HttpURLConnection con = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY);
) を指定することもできます。しかし、どうすればデフォルトのプロキシを指定できますか?
たとえば、メソッドがあり、「デフォルト プロキシ」(設定されていないProxy.NO_PROXY
場合http.proxyHost
と同じことを行いますhttp.proxyPort
) との接続を開きたいですか? 私は使用できます
(HttpURLConnection) ((proxy == null) ? url.openConnection() : url.openConnection(proxy))
しかし、やるべきことはありますか
(HttpURLConnection) url.openConnection(proxy == null ? [the default proxy] : proxy)
デフォルトのプロキシを取得しようとしました
public static Proxy getCurrentHTTPProxy(Proxy defaultProxy) {
String proxyHost = System.getProperty("http.proxyHost");
String proxyPort = System.getProperty("http.proxyPort");
if (proxyHost == null || proxyPort == null) {
return defaultProxy;
}
return new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, Integer.parseInt(proxyPort)));
}
ただし、特別なケースを作成して、https プロキシ設定を確認する必要があります。(URL が http の場合は getCurrentHTTPProxy を呼び出し、URL が https の場合は getCurrentHTTPSProxy を呼び出します)。ProxySelector も調べました (ここのように Java プログラムでデフォルトのプロキシ設定を取得する方法 (アプレットではありません)? ) が、このようなものには不器用すぎるようです。
最後に、openjdk の実装を調べてみました。渡されたパラメーターが null の場合、デフォルト プロキシとの接続を開くように見えますが、Sun JVM で試してみると、NullPointerException が発生しました。