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.

Sorodni članki