Una solicitud de Java puede encontrarse con varias entradas de proxy: configuración explícita del cliente, el selector predeterminado, propiedades de red de la JVM y ajustes compatibles del sistema operativo. Cuando un registro menciona SOCKS de forma inesperada, identifique qué entrada lo eligió.

Para el código que usa el selector predeterminado, inspeccione la decisión para el destino exacto:

URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
    System.out.println(selector.select(target));
}

Esto informa de los candidatos del selector. No demuestra qué conexión acabó teniendo éxito, y un cliente con su propia ruta explícita puede tomar una decisión distinta.

Compruebe los ajustes efectivos

Revise http.proxyHost, https.proxyHost, socksProxyHost, sus puertos y java.net.useSystemProxies. La documentación de propiedades de red del JDK describe su alcance y precedencia. La detección del proxy del sistema se comprueba al arrancar; establézcala deliberadamente al iniciar la JVM.

Las respuestas históricas describen combinaciones concretas de antiguos diálogos de Windows y JDK antiguos. Esos informes pueden explicar el origen de una solución provisional, pero no demuestran que un entorno de ejecución actual tenga el mismo error. Registre la versión del entorno de ejecución y la salida del selector antes de cambiar los ajustes del sistema operativo para cada aplicación.

Si la aplicación necesita un proxy HTTP para un cliente, una configuración explícita de proxy puede aclarar ese requisito. Si necesita enrutamiento automático central, investigue por qué el selector recibió o devolvió la entrada SOCKS inesperada.

Un selector personalizado debería preservar las omisiones intencionadas y el tratamiento de fallos. Filtrar todos los candidatos SOCKS sin distinción puede romper conexiones que debían usar uno. Corrija la regla incorrecta con el menor alcance que pueda identificar.

Artículos relacionados