Een Java-proxyobject beschrijft een route. De netwerkclient beslist nog steeds welke soorten routes hij kan gebruiken. Dit is belangrijk wanneer het beschikbare eindpunt SOCKS spreekt en de toepassing java.net.http.HttpClient gebruikt.

In de hier onderzochte JDK 25-implementatie accepteert de aanvraagcode van de HTTP-client een HTTP-kandidaat van de selector. Een SOCKS-kandidaat zorgt er niet voor dat hij SOCKS-onderhandeling uitvoert; de implementatie kan doorgaan zonder proxy. Een geslaagd antwoord is dus geen voldoende bewijs dat de SOCKS-vermelding van een aangepaste selector is gebruikt.

Kies eerst het transport

Voor een bestaande op URLConnection gebaseerde toepassing kan de protocolhandler bij het openen van de verbinding een ondersteunde expliciete proxy krijgen:

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);

Gebruik voor toegestane tests op openbare doelen een overeenkomend SOCKS-eindpunt uit uw dienst of uit de SOCKS-proxylijst. Dit is een andere client-API, geen alternatieve spelling van HttpClient.Builder.proxy. Behoud de bestemmings-URL zodat HTTPS de bedoelde website blijft identificeren.

Een toepassing die java.net.http moet behouden, kan in plaats daarvan een compatibel HTTP-proxyeindpunt gebruiken, inclusief een goedgekeurde adapter die de verdere SOCKS-verbinding afhandelt. Dat voegt een echte component en nog een toegangsgrens toe; poort 8080 wijzigen in 1080 levert die vertaling niet.

Houd keuze en overname zichtbaar

Leg zowel het resultaat van de selector als de verbinding die de client werkelijk opent vast. Het eerste beschrijft beleidsuitvoer; het tweede stelt vast of de implementatie die heeft overgenomen.

Koppel conclusies aan de gebruikte runtime en het gebruikte transport. JVM SOCKS-eigenschappen die één socket-implementatie gebruikt, zijn geen belofte dat elke HTTP-bibliotheek ze raadpleegt. Wanneer de route verplicht is, moet een niet-ondersteund proxytype worden gedetecteerd voordat een ogenschijnlijk geslaagde directe aanvraag wordt geaccepteerd.

Gerelateerde artikelen