JDK 25 HttpClient nepoužíva SOCKS trasy z ProxySelectora
Vyberte prenos HTTP v Jave, ktorý skutočne podporuje SOCKS, namiesto spoliehania sa len na typ vrátený ProxySelectorom.
Objekt proxy v Jave opisuje trasu. Sieťový klient stále rozhoduje, ktoré druhy trás môže použiť. To je dôležité, keď dostupný koncový bod hovorí SOCKS a aplikácia používa java.net.http.HttpClient.
V tu skúmanej implementácii JDK 25 kód požiadavky HTTP klienta prijíma HTTP kandidáta od selektora. Kandidát SOCKS ho neprinúti vykonať vyjednávanie SOCKS; implementácia môže pokračovať bez proxy. Úspešná odpoveď preto nie je dostatočným dôkazom, že bol použitý záznam SOCKS vlastného selektora.
Najprv vyberte prenos
Pre existujúcu aplikáciu založenú na URLConnection možno obsluhe protokolu pri otváraní spojenia odovzdať podporovanú explicitnú proxy:
Proxy route = new Proxy(Proxy.Type.SOCKS,
new InetSocketAddress("proxy.example", 1080));
URLConnection connection = URI.create("https://service.example/")
.toURL().openConnection(route);
connection.setConnectTimeout(5000);
connection.setReadTimeout(15000);
Pre povolené testy verejných cieľov použite zodpovedajúci koncový bod SOCKS zo svojej služby alebo zo zoznamu SOCKS proxy. Ide o iné klientske API, nie o alternatívny zápis HttpClient.Builder.proxy. Zachovajte cieľovú URL, aby HTTPS naďalej určovalo zamýšľanú webovú lokalitu.
Aplikácia, ktorá musí zachovať java.net.http, môže namiesto toho použiť kompatibilný koncový bod HTTP proxy, vrátane schváleného adaptéra, ktorý zabezpečuje nasledujúce spojenie SOCKS. To pridáva skutočnú komponentu a ďalšiu hranicu prístupu; zmena portu 8080 na 1080 toto prekladanie neposkytuje.
Udržujte voľbu aj prijatie viditeľné
Zaznamenajte výsledok selektora aj spojenie, ktoré klient skutočne otvorí. Prvý opisuje výstup politiky; druhé určuje, či ho implementácia prijala.
Spájajte závery s použitým runtime a prenosom. Vlastnosti JVM SOCKS, ktoré používa jedna implementácia socketu, nie sú sľubom, že ich každá HTTP knižnica konzultuje. Keď je trasa povinná, nepodporovaný typ proxy by sa mal zistiť pred prijatím zdanlivo úspešnej priamej požiadavky.