Un obxecto proxy de Java describe unha ruta. O cliente de rede segue decidindo que tipos de ruta pode usar. Isto importa cando o punto final dispoñible fala SOCKS e a aplicación usa java.net.http.HttpClient.

Na implementación de JDK 25 examinada aquí, o código de solicitude do cliente HTTP acepta un candidato HTTP do selector. Un candidato SOCKS non fai que realice a negociación SOCKS; a implementación pode continuar sen proxy. Polo tanto, unha resposta correcta non é proba suficiente de que se usou a entrada SOCKS dun selector personalizado.

Escolla primeiro o transporte

Para unha aplicación existente baseada en URLConnection, pódese dar un proxy explícito compatible ao xestor de protocolo ao abrir a conexión:

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

Para probas permitidas contra obxectivos públicos, use un punto final SOCKS correspondente do seu servizo ou da lista de proxies SOCKS. É unha API de cliente distinta, non unha forma alternativa de escribir HttpClient.Builder.proxy. Conserve o URL de destino para que HTTPS siga identificando o sitio previsto.

Unha aplicación que deba conservar java.net.http pode usar no seu lugar un punto final de proxy HTTP compatible, incluído un adaptador aprobado que xestione a conexión SOCKS posterior. Iso engade un compoñente real e outro límite de acceso; cambiar o porto 8080 polo 1080 non fornece esa tradución.

Manteña visibles a selección e a adopción

Rexistre tanto o resultado do selector como a conexión que o cliente abre realmente. O primeiro describe a saída da política; o segundo establece se a implementación a adoptou.

Vincule as conclusións á contorna de execución e ao transporte utilizados. As propiedades SOCKS da JVM que usa unha implementación de socket non son unha promesa de que toda biblioteca HTTP as consulte. Cando a ruta é obrigatoria, debería detectarse un tipo de proxy non compatible antes de aceptar unha solicitude directa aparentemente correcta.

Artigos relacionados