Java HttpURLConnection 使用 SOCKS 代理而不是 HTTP

标签 java windows proxy

我有一个非常简单的代码,它使用 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/

相关文章:

java - 从 InputStream 读取 - 忙等待的非阻塞 VS 超时的阻塞?

java - 使用最小 if else 来解决

java - 我的程序不会显示任何输出

c++ - 为 Wchar_t 替换双反斜杠

windows - LINUX 上是否需要 UNALIGNED 内存访问(从 Windows 移植到 Linux)

c# - 没有代理的低下载速度

java - 分配的变量引用在哪里,在堆栈中还是在堆中?

c++ - 如何以编程方式关闭 Windows 中打开的文件/应用程序?

proxy - Jenkins作为docker容器运行时无法访问互联网

proxy - Fiddler 网关代理用户名/密码