JDK 25 HttpClient ne uporablja poti SOCKS iz ProxySelectorja
Izberite prenos HTTP v Javi, ki res podpira SOCKS, namesto da bi se zanašali le na tip, ki ga vrne ProxySelector.
Predmet proxy v Javi opisuje pot. Omrežni odjemalec še vedno odloča, katere vrste poti lahko uporabi. To je pomembno, ko razpoložljiva končna točka govori SOCKS in aplikacija uporablja java.net.http.HttpClient.
V tu preučeni izvedbi JDK 25 koda zahteve odjemalca HTTP sprejme kandidata HTTP iz izbirnika. Kandidat SOCKS ga ne prisili k izvajanju pogajanj SOCKS; izvedba lahko nadaljuje brez proxyja. Uspešen odgovor torej ni zadosten dokaz, da je bil uporabljen vnos SOCKS vsebniškega izbirnika.
Najprej izberite prenos
Za obstoječo aplikacijo, ki temelji na URLConnection, lahko upravljalniku protokola pri odpiranju povezave podate podprt izrecni 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);
Za dovoljene teste javnih ciljev uporabite ustrezno končno točko SOCKS iz svoje storitve ali s seznama proxyjev SOCKS. To je drug odjemalski API, ne alternativni zapis HttpClient.Builder.proxy. Ohranite ciljni URL, da bo HTTPS še naprej prepoznal predvideno spletno mesto.
Aplikacija, ki mora ohraniti java.net.http, lahko namesto tega uporabi združljivo končno točko proxyja HTTP, vključno z odobrenim vmesnikom, ki poskrbi za nadaljnjo povezavo SOCKS. To doda resnično komponento in še eno mejo dostopa; sprememba vrat 8080 v 1080 tega prevoda ne zagotovi.
Ohranite izbiro in prevzem vidna
Zabeležite rezultat izbirnika in povezavo, ki jo odjemalec dejansko odpre. Prvi opisuje izhod pravilnika; drugi ugotavlja, ali ga je izvedba prevzela.
Sklepe vežite na uporabljeno izvajalno okolje in prenos. Lastnosti JVM SOCKS, ki jih uporablja ena izvedba vtičnice, niso obljuba, da jih vsaka knjižnica HTTP upošteva. Ko je pot obvezna, je treba nepodprto vrsto proxyja zaznati, preden sprejmemo na videz uspešno neposredno zahtevo.