HttpURLConnection は usingProxy を公開しますが、結果は接続の実装と状態と併せて読む必要があります。これはテスト要求ではありません。

OpenJDK 25 の HTTP ハンドラでは、明示的に設定された HTTP プロキシにより、ネットワーク接続が開かれる前にメソッドが true を返すことがあります。

import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URI;

var proxy = new Proxy(Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example", 8080));
var url = URI.create("http://example.com/").toURL();
var connection = (HttpURLConnection) url.openConnection(proxy);
boolean proxyFlag = connection.usingProxy();

HTTP プロキシ一覧の HTTP 候補は、プロキシ認証なしで許可された公開リクエスト用のホストとポートを埋められます。openConnection はオブジェクトを構築します。そのオブジェクトを返すだけでは HTTP 接続を確立しません。したがって、この明示的プロキシの場合のフラグは、仲介者が到達可能であることや要求を受け付けることを証明しません。

自動選択では、経路の選択はハンドラが接続するときに後から起こり得ます。早い段階の false の結果を最終的な経路決定とみなすべきではありません。接続後は、例外や応答と併せて状態を解釈してください。とくに認証やフォールバックが関与した場合に重要です。

この公開メソッドは HttpURLConnection に属しますが、上記の挙動は名前を挙げた OpenJDK ハンドラに固有です。別のプロバイダや JDK 実装が同じ接続前の詳細を示す必要はありません。

プロキシがどのように選ばれ、フラグがいつ読まれたかを記録してください。宛先が見る送信元アドレスを確定するには、宛先側の証拠を保存します。真偽値のプロキシ表示には、その出口アドレスのためのフィールドがありません。

関連記事