【问题标题】:How do I configure apache httpcore 4 to use a proxy?如何配置 apache httpcore 4 以使用代理?
【发布时间】:2009-07-23 10:08:16
【问题描述】:

我正在尝试使用最新的 (4.0.1) Apache http 核心组件库。但是,我的网络浏览器通过代理 - 假设它是 myproxy.com:9191。有人可以提供一些示例代码来获取简单的 http get 以将其用作代理吗?

我尝试在代码开头添加以下内容,但没有任何乐趣:

ProxySelector.setDefault(new ProxySelector() {
  public List<Proxy> select(URI uri) {
    Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("myproxy.com", 9191);
    return Arrays.asList(new Proxy[]{proxy)});
  }
  public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
    ioe.printStackTrace();
  }
});

【问题讨论】:

    标签: java http proxy apache-httpclient-4.x


    【解决方案1】:

    在没有答案的情况下,这是我发现的。

    首先,对于这种事情,你不只是想使用http核心库,你还想使用httpclient,确保你从下载页面下载。

    其次,使用这段代码:

    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpHost proxy = new HttpHost("myproxy.com", 9191);
    httpclient.getCredentialsProvider().setCredentials(
      new AuthScope(PROXY, PROXY_PORT),
      new UsernamePasswordCredentials("username", "password"));
    httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
    

    【讨论】:

    • 我不太喜欢 HttpCore。 API 似乎比 HttpClient 考虑得更周到,但它以全新的方式令人不快,而且不像 HttpClient 那样易于使用。
    • 我的理解是,如果你需要做httpClient类型的事情,你就使用HttpClient,而那反过来使用HttpCore来做一些更抽象的事情。大多数应用程序可能不需要直接使用 HttpCore。还是我错了?
    • 在 Apache HttpComponents 页面http://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientExecuteProxy.java 上有一个示例,它可以满足您的要求,但在 CredentialsProvider 设置上没有任何内容。也不清楚 PROXY 和 PROXY_PORT 来自哪里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    • 2015-02-16
    • 2014-10-31
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多