Apache HTTP 客户端 socks 代理
Posted
技术标签:
【中文标题】Apache HTTP 客户端 socks 代理【英文标题】:Apache HTTP Client socks proxy 【发布时间】:2012-06-04 18:12:52 【问题描述】:我目前正在从事一个 Web 请求项目,并且正在使用 Apache Http 客户端库。我尝试连接到服务器(例如http://www.google.com),并使用经过 Mozilla firefox 测试的工作 Socks v4/5,但问题是我从未得到响应。只有不同的错误...
这是一个代码sn-p:
//HttpClient
DefaultHttpClient http = new DefaultHttpClient();
//A class defined by me
Proxy proxy = bla bla;
HttpHost host = new HttpHost(proxy.getIP(), proxy.getPort());
if (proxy.getUsername() != null)
http.getCredentialsProvider().setCredentials(
new AuthScope(proxy.getIP(), proxy.getPort()),
new UsernamePasswordCredentials(proxy.getUsername(), proxy.getPassword()));
http.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, host);
谁能告诉通过 SOCKS 代理启动通信的正确方法?谢谢!
注意:上面的代码与 HTTP 代理完美配合。
【问题讨论】:
java.net.SocketException:软件导致连接中止:recv 失败或服务器无法访问等。但是如果我将代理与 mozilla 一起使用,它就可以工作。 【参考方案1】:Http 代理和 socks 代理有非常不同的协议(http://en.wikipedia.org/wiki/SOCKS#Comparison)。 对于您的问题: 您可以通过本机 Java 套接字 (How can I configure HTTPClient to authenticate against a SOCKS proxy?) 或通过 DefaultClientConnectionOperator 创建您自己的实现,这是很好的指南 (http://4devops.blogspot.com/2011/10/httphttps-over-socks-proxy-with-java.html)
【讨论】:
以上是关于Apache HTTP 客户端 socks 代理的主要内容,如果未能解决你的问题,请参考以下文章