Unha solicitude Java pode atopar varias entradas de proxy: configuración explícita do cliente, o selector predeterminado, propiedades de rede da JVM e axustes compatibles do sistema operativo. Cando un rexistro menciona SOCKS de forma inesperada, identifique que entrada o escolleu.

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

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

Isto informa dos candidatos do selector. Non demostra que conexión acabou tendo éxito, e un cliente coa súa propia ruta explícita pode tomar unha decisión distinta.

Comprobe os axustes efectivos

Revise http.proxyHost, https.proxyHost, socksProxyHost, os seus portos e java.net.useSystemProxies. A documentación de propiedades de rede do JDK describe o seu alcance e precedencia. A detección do proxy do sistema compróbase no arranque; establézaa deliberadamente ao iniciar a JVM.

As respostas históricas describen combinacións concretas de antigos diálogos de Windows e JDK antigos. Eses informes poden explicar a orixe dunha solución provisional, pero non demostran que un contorno de execución actual teña o mesmo erro. Rexistre a versión do contorno de execución e a saída do selector antes de cambiar os axustes do sistema operativo para cada aplicación.

Se a aplicación necesita un proxy HTTP para un cliente, unha configuración explícita de proxy pode aclarar ese requisito. Se necesita enrutamento automático central, investigue por que o selector recibiu ou devolveu a entrada SOCKS inesperada.

Un selector personalizado debería preservar as omisións intencionadas e o tratamento de fallos. Filtrar todos os candidatos SOCKS sen distinción pode romper conexións que debían usar un. Corrixa a regra incorrecta co menor alcance que poida identificar.

Artigos relacionados