我有一段代码连接到Socket服务器,并且它工作正常。如何通过HTTP代理连接Socket服务器
Socket socket = new Socket();
socket.connect(new InetSocketAddress(address, port));
现在我想通过HTTP代理连接,该怎么办?
我想这并未能
SocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);
Socket socket = new Socket(proxy);
socket.connect(new InetSocketAddress(address, port));
this post建议我应该使用雅加达Commons的HttpClient,但如何使用它通过HTTP代理服务器连接套接字服务器?
更新: 我用SOCKS代理,它不工作,如果我使用HTTP代理:
SocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
Socket socket = new Socket(proxy);
socket.connect(new InetSocketAddress(address, port));
,它会抛出IllegalArgumentException
java.lang.IllegalArgumentException: Proxy is null or invalid type
at java.net.Socket.<init>(Socket.java:88)
一些好的信息过的应用程序:HTTP://下载.oracle.com/javase/6/docs/technotes/guides/net/proxies.html –
在sun.net.www.protocol.http.HttpURLConnection中有一个doTunneling()。也许有可能在隧道建立之后拆开那个类并访问下面的套接字......但是你会使用一个可以在任何时候消失的合适的API。如果你使用HttpClient,这不会成为问题。 – prunge
你能弄清楚这一点吗?这是我现在看到的一个问题 – user2202911