我有一个非常简单的代码,它使用 HttpURLConnection 通过代理访问一些网站
System.setProperty("java.net.useSystemProxies", "true");
System.out.println("Proxy: " + ProxySelector.getDefault().select(new URI(urlS)));
URL url = new URL(urlS);
HttpURLConnection ic = (HttpURLConnection)url.openConnection();
ic.connect();
出于某种原因,Java 认为我需要 SOCKS 代理,而不是 http,抛出以下异常:
ERROR: Can't connect to SOCKS proxy:Connection timed out: connect
最佳答案
如果您在 Windows 上遇到此问题,您可能会遇到 Java 错误。
Java 将任何系统代理设置视为 SOCKS。您必须在 Windows 中禁用 useSystemProxies 或不使用代理。
如果需要代理,请尝试取消选中“对所有协议(protocol)使用相同的代理服务器”,确保 SOCKS 代理的字段为空。这解决了我们的问题。
关于Java HttpURLConnection 使用 SOCKS 代理而不是 HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3174375/