Prečo Java vybrala pre váš HTTP request SOCKS proxy
Pred použitím starých windowsových proxy obchádzok skontrolujte výsledok ProxySelector a platné nastavenia JVM.
Java požiadavka môže naraziť na niekoľko proxy vstupov: explicitnú konfiguráciu klienta, predvolený selektor, sieťové vlastnosti JVM a podporované nastavenia operačného systému. Keď sa v logu neočakávane spomenie SOCKS, zistite, ktorý vstup ho vybral.
Pri kóde, ktorý používa predvolený selektor, preskúmajte rozhodnutie pre presný cieľ:
URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
System.out.println(selector.select(target));
}
Toto vypisuje kandidátov selektora. Nedokazuje, ktoré spojenie nakoniec uspelo, a klient s vlastnou explicitnou trasou sa môže rozhodnúť inak.
Skontrolujte platné nastavenia
Skontrolujte http.proxyHost, https.proxyHost, socksProxyHost, ich porty a java.net.useSystemProxies. dokumentácia JDK k sieťovým vlastnostiam opisuje ich rozsah a prioritu. Zisťovanie systémového proxy sa kontroluje pri štarte; nastavte ho zámerne pri spustení JVM.
Historické odpovede opisujú konkrétne kombinácie starých windowsových dialógov a starých JDK. Tie správy môžu vysvetliť pôvod obchádzky, ale nedokazujú, že súčasné runtime má rovnakú chybu. Pred zmenou nastavení operačného systému pre každú aplikáciu zaznamenajte verziu runtime a výstup selektora.
Ak aplikácia potrebuje HTTP proxy pre jedného klienta, explicitná konfigurácia proxy môže túto požiadavku sprehľadniť. Ak potrebuje centrálne automatické smerovanie, preskúmajte, prečo selektor dostal alebo vrátil neočakávanú SOCKS položku.
Vlastný selektor by mal zachovať zámerné obchádzky a spracovanie zlyhaní. Neselektívne filtrovanie každého SOCKS kandidáta môže prerušiť spojenia, ktoré ho mali používať. Opravte nesprávne pravidlo v najmenšom rozsahu, ktorý dokážete určiť.