1

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 が発生しました。

4

0 に答える 0