HttpURLConnection.usingProxy() vor und nach dem Verbinden
usingProxy als Handler-Zustand lesen, einschließlich des Verhaltens von OpenJDK 25 mit explizitem Proxy vor dem Verbindungsaufbau.
HttpURLConnection stellt usingProxy bereit, doch das Ergebnis braucht die Implementierung und den Zustand der Verbindung daneben. Es ist keine Testanfrage.
Im HTTP-Handler von OpenJDK 25 kann ein ausdrücklich konfigurierter HTTP-Proxy bewirken, dass die Methode true zurückgibt, bevor die Netzwerkverbindung geöffnet wird:
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();Ein HTTP-Kandidat aus der HTTP-Proxy-Liste kann Host und Port für eine erlaubte öffentliche Anfrage ohne Proxy-Authentifizierung liefern. openConnection erzeugt das Objekt. Es baut die HTTP-Verbindung nicht allein dadurch auf, dass es dieses Objekt zurückgibt. Das Flag belegt in diesem Fall mit explizitem Proxy daher nicht, dass der Vermittler erreichbar ist oder die Anfrage annimmt.
Bei automatischer Auswahl kann die Routenwahl erst beim Verbinden des Handlers erfolgen. Ein frühes false-Ergebnis sollte nicht als endgültige Routenentscheidung gelten. Nach dem Verbinden ist der Zustand zusammen mit einer Ausnahme oder Antwort zu lesen, besonders wenn Authentifizierung oder Rückfall beteiligt waren.
Die öffentliche Methode gehört zu HttpURLConnection, das obige Verhalten ist jedoch spezifisch für den genannten OpenJDK-Handler. Ein anderer Anbieter oder eine andere JDK-Implementierung muss nicht dieselben Details vor dem Verbindungsaufbau zeigen.
Halten Sie fest, wie der Proxy gewählt wurde und wann das Flag gelesen wurde. Um die vom Ziel gesehene Quelladresse zu belegen, bewahren Sie Belege von der Zielseite auf; eine boolesche Proxy-Markierung hat kein Feld für diese Ausgangsadresse.