JDK 25 HttpClient brûkt gjin SOCKS-rûtes fan ProxySelector
Kies in Java HTTP-transport dy't SOCKS echt stipet, ynstee fan allinnich te fertrouwen op it type dat in ProxySelector weromjout.
In Java-proxyobjekt beskriuwt in rûte. De netwurkklient beslút noch hieltyd hokker soarten rûtes er brûke kin. Dat is fan belang as it beskikbere einpunt SOCKS praat en de applikaasje java.net.http.HttpClient brûkt.
Yn 'e hjir ûndersochte JDK 25-ymplemintaasje akseptearret de oanfraachkoade fan 'e HTTP-klient in HTTP-kandidaat fan 'e selektor. In SOCKS-kandidaat lit him gjin SOCKS-ûnderhanneling útfiere; de ymplemintaasje kin trochgean sûnder proxy. In slagge antwurd is dêrom gjin foldwaande bewiis dat it SOCKS-ynstjoer fan in oanpaste selektor brûkt is.
Kies earst de transport
Foar in besteande applikaasje op basis fan URLConnection kin de protokolhânfieder by it iepenjen fan 'e ferbining in stipe eksplisite proxy krije:
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);
Foar tastiene tests op iepenbiere doelen, brûk in bypassend SOCKS-einpunt fan jo tsjinst of fan 'e SOCKS-proxylist. Dit is in oare klant-API, net in alternative stavering fan HttpClient.Builder.proxy. Behâld de bestimmings-URL sadat HTTPS de bedoelde webside blyft identifisearjen.
In applikaasje dy't java.net.http behâlde moat, kin ynstee in kompatibel HTTP-proxy-einpunt brûke, ynklusyf in goedkarde adapter dy't de folgjende SOCKS-ferbining ôfhannelet. Dat foeget in echte komponint en noch in tagongsgrins ta; poarte 8080 feroarje nei 1080 leveret dy oersetting net.
Hâld seleksje en oanname sichtber
Registrearje sawol it resultaat fan 'e selektor as de ferbining dy't de klient eins iepenet. It earste beskriuwt beliedsútfier; it twadde stelt fêst oft de ymplemintaasje it oannaam.
Byn konklúzjes oan 'e brûkte runtime en transport. JVM-SOCKS-eigenskippen dy't ien socket-ymplemintaasje brûkt, binne gjin belofte dat elke HTTP-bibleteek se rieplachtet. As de rûte ferplicht is, moat in net-stipe proxytype ûntdutsen wurde foardat in skynber slagge direkte oanfraach akseptearre wurdt.