【问题标题】:Apache HTTP Client socks proxyApache HTTP 客户端 socks 代理
【发布时间】: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 一起使用,它就可以工作。

标签: java apache http client socks


【解决方案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)

【讨论】:

    猜你喜欢
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    相关资源
    最近更新 更多