我尝试用套接字创建SSLSocket,但我得到了这个例外
SocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
Socket underlying = new Socket(new Proxy(Proxy.Type.SOCKS, proxyAddr));
underlying.connect(new InetSocketAddress(host, port));
SSLSocket socket = (SSLSocket) factory.createSocket(underlying,proxyHost,proxyPort,true);
例外:java.net.SocketException:来自SOCKS服务器的格式错误的回复
谢谢您的帮助
您已将应用程序配置为使用SOCKS代理,但您指定为proxyAddr
的host:port上的实体不是SOCKS服务器。
解决这个问题:
1)在Internet Explorer中打开工具 - > Internet选项(或者,在Windows 7中打开控制面板网络设置)
2)打开“连接”选项卡
3)单击LAN设置
4)如果启用了“使用代理服务器”,请单击“高级”并禁用“为所有协议使用相同的代理服务器”
这只是控制Internet Explorer的功能。它与Java无关。 OP的代码是明确使用SOCKS代理,或尝试。不依赖于任何控制面板设置
在Windows上错误.... Internet选项控制Windows使用Proxyserver的方式,Internet Explorer只是一个使用“Windows标准配置”的应用程序Standardconfig中的Java使用“Systemstandard”进行连接,因此如果您不指定Proxyserver通过Java这种解决方法将有所帮助,但它不是一个“解决方案”。