2013-11-22 79 views
2

我尝试创建与插座的SSLSocket,但我得到这个异常java.net.SocketException异常:从SOCKS服务器畸形答复

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服务器畸形答复

感谢您的帮助

+0

请确保您指向正确的代理地址。一个非常常见的错误是你给正常的端口,而你必须给代理服务器的HTTPS端口 –

+0

@FreakyThommi HTTPS与这个问题无关。 – EJP

回答

0

您已将应用程序配置为使用SOCKS代理,但您指定为proxyAddr的主机:端口上的实体不是SOCKS服务器。

+0

正如你所说的问题是我不应该使用proxyHost/proxyPort来创建SSLSocket,但我如何使用SOCKS服务器来创建SSLSocket。 谢谢 –

+0

@Michaelwu这不是我所说的。 'proxyHost/proxyPort'用于HTTP代理,而不是SOCKS代理。您没有* SOCKS服务器,或者至少不在您指定的IP:端口。要么你根本不应该使用'Proxy.Type.SOCKS',或者你应该指定正确的代理地址。 – EJP

-1

为了解决这个问题:

1)打开工具 - 在Internet Explorer> Internet选项(或者可替换地在Windows 7,控制面板网络设置)

2)打开连接选项卡

3)点击局域网设置

4)如果启用“使用代理服务器”,请单击高级并禁用“对所有协议使用相同的代理服务器”

+0

这只是控制Internet Explorer的功能。它与Java无关。 OP的代码是* explicity *使用SOCKS代理,或者尝试。不依赖任何控制面板设置。 – EJP

+0

我使用这个解决了SOCKS服务器的格式错误的回复问题,如果lan设置在System上使用socks代理,Java不会订阅:/ –

相关问题