Java proxy objekt opisuje rutu. Mrežni klijent i dalje odlučuje koje vrste ruta može koristiti. To je važno kada dostupna krajnja tačka govori SOCKS, a aplikacija koristi java.net.http.HttpClient.

U ovdje ispitanoj implementaciji JDK 25, kod zahtjeva HTTP klijenta prihvata HTTP kandidata od selektora. SOCKS kandidat ga ne navodi da izvrši SOCKS pregovaranje; implementacija može nastaviti bez proxyja. Zato uspješan odgovor nije dovoljan dokaz da je SOCKS unos prilagođenog selektora iskorišten.

Prvo odaberite transport

Za postojeću aplikaciju zasnovanu 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 dozvoljena testiranja javnih ciljeva koristite odgovarajuću SOCKS krajnju tačku iz svoje usluge ili sa liste SOCKS proxyja. To je drugačiji klijentski API, a ne alternativni zapis za HttpClient.Builder.proxy. Sačuvajte odredišni URL kako bi HTTPS i dalje prepoznavao predviđenu web lokaciju.

Aplikacija koja mora zadržati java.net.http može umjesto toga koristiti kompatibilnu HTTP proxy krajnju tačku, uključujući odobreni adapter koji preuzima daljnju SOCKS vezu. To dodaje stvarnu komponentu i još jednu granicu pristupa; promjena porta 8080 na 1080 ne pruža to prevođenje.

Neka izbor i usvajanje budu vidljivi

Zabilježite i rezultat selektora i vezu koju klijent zaista otvara. Prvi opisuje izlaz politike; drugi utvrđuje da li ga je implementacija usvojila.

Vežite zaključke za radno okruženje i transport koji se koriste. JVM SOCKS svojstva koja koristi jedna implementacija socketa nisu obećanje da ih svaka HTTP biblioteka konsultuje. Kada je ruta obavezna, nepodržani tip proxyja treba otkriti prije prihvatanja naizgled uspješnog direktnog zahtjeva.

Povezani članci