JDK 25 HttpClient ne koristi SOCKS rute iz ProxySelectora
Odaberite Java HTTP prijenos koji stvarno podržava SOCKS umjesto da se oslanjate samo na tip koji vraća ProxySelector.
Java proxy objekt opisuje rutu. Mrežni klijent i dalje odlučuje koje vrste ruta može koristiti. To je važno kada dostupna završna točka govori SOCKS, a aplikacija koristi java.net.http.HttpClient.
U ovdje ispitanoj implementaciji JDK 25, kod zahtjeva HTTP klijenta prihvaća HTTP kandidata od selektora. SOCKS kandidat ga ne potiče na SOCKS pregovaranje; implementacija može nastaviti bez proxyja. Stoga uspješan odgovor nije dovoljan dokaz da je korišten SOCKS unos prilagođenog selektora.
Najprije odaberite prijenos
Za postojeću aplikaciju koja se temelji na URLConnection, rukovatelju protokola može se dati podržani eksplicitni proxy pri otvaranju veze:
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 dopuštena testiranja javnih ciljeva upotrijebite odgovarajuću SOCKS završnu točku iz svoje usluge ili s popisa SOCKS proxyja. To je drukčiji klijentski API, a ne alternativni način pisanja HttpClient.Builder.proxy. Sačuvajte odredišni URL kako bi HTTPS i dalje prepoznavao namijenjeno web-mjesto.
Aplikacija koja mora zadržati java.net.http može umjesto toga koristiti kompatibilnu završnu točku HTTP proxyja, uključujući odobreni adapter koji preuzima daljnju SOCKS vezu. To dodaje stvarnu komponentu i još jednu granicu pristupa; promjena porta 8080 u 1080 ne pruža to prevođenje.
Držite odabir i usvajanje vidljivima
Zabilježite i rezultat selektora i vezu koju klijent stvarno otvara. Prvi opisuje izlaz politike; drugi utvrđuje je li ga implementacija usvojila.
Vezujte zaključke uz korišteno okruženje izvršavanja i prijenos. JVM SOCKS svojstva koja koristi jedna implementacija socketa nisu obećanje da ih svaka HTTP biblioteka konzultira. Kada je ruta obavezna, nepodržani tip proxyja treba otkriti prije prihvaćanja naizgled uspješnog izravnog zahtjeva.