Zašto je Java odabrala SOCKS proxy za vaš HTTP zahtjev
Pregledajte rezultat ProxySelectora i učinkovite JVM postavke prije primjene starih Windows proxy rješenja.
Java zahtjev može naići na nekoliko proxy izvora: izričitu konfiguraciju klijenta, zadani selektor, JVM mrežna svojstva i podržane postavke operacijskog sustava. Kada zapis neočekivano spomene SOCKS, utvrdite koji ga je izvor odabrao.
Za kod koji koristi zadani selektor, pregledajte odluku za točno odredište:
URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
System.out.println(selector.select(target));
}
Ovo ispisuje kandidate selektora. Ne dokazuje koja je veza na kraju uspjela, a klijent s vlastitim izričitim putem može odabrati drukčije.
Provjerite učinkovite postavke
Pregledajte http.proxyHost, https.proxyHost, socksProxyHost, njihove portove i java.net.useSystemProxies. Dokumentacija JDK mrežnih svojstava opisuje njihov opseg i prednost. Otkrivanje sistemskog proxyja provjerava se pri pokretanju; postavite ga namjerno pri pokretanju JVM-a.
Povijesni odgovori opisuju određene kombinacije starih Windows dijaloga i starih JDK-ova. Ti izvještaji mogu objasniti podrijetlo rješenja, ali ne dokazuju da trenutačno izvršno okruženje ima istu pogrešku. Zabilježite verziju izvršnog okruženja i izlaz selektora prije promjene postavki operacijskog sustava za svaku aplikaciju.
Ako aplikaciji treba HTTP proxy za jednog klijenta, izričita proxy konfiguracija može taj zahtjev učiniti jasnijim. Ako joj treba središnje automatsko usmjeravanje, istražite zašto je selektor primio ili vratio neočekivanu SOCKS stavku.
Prilagođeni selektor trebao bi sačuvati namjerna zaobilaženja i rukovanje pogreškama. Filtriranje svih SOCKS kandidata bez razlike može prekinuti veze koje su trebale koristiti jedan. Ispravite netočno pravilo s najmanjim opsegom koji možete utvrditi.