当前位置: 首页 > 面试题库 >

如何用RequestConfig替换不推荐使用的httpClient.getParams()?

郑狐若
2023-03-14
问题内容

我已经继承了代码

import org.apache.http.client.HttpClient;
...
HttpClient httpclient = createHttpClientOrProxy();
...



private HttpClient createHttpClientOrProxy() {
    HttpClient httpclient = new DefaultHttpClient();

    /*
     * Set an HTTP proxy if it is specified in system properties.
     * 
     * http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html
     * http://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientExecuteProxy.java
     */
    if( isSet(System.getProperty("http.proxyHost")) ) {
        int port = 80;
        if( isSet(System.getProperty("http.proxyPort")) ) {
            port = Integer.parseInt(System.getProperty("http.proxyPort"));
        }
        HttpHost proxy = new HttpHost(System.getProperty("http.proxyHost"), port, "http");
// @Deprecated methods here... getParams() and ConnRoutePNames
        httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
    }
    return httpclient;
}

httpClient.getParams() @已弃用,并显示为“

HttpParams  getParams()
Deprecated. 
(4.3) use RequestConfig.

没有RequestConfig的类文档,我不知道应该使用哪种方法来替换getParams()and
ConnRoutePNames.DEFAULT_PROXY


问题答案:

您正在将apache HttpClient 4.3库与apache HttpClient 4.2代码一起使用。

请注意,在您的情况下,getParams()和ConnRoutePNames不是唯一不推荐使用的方法。DefaultHttpClient类本身依赖于4.2实现,并且在4.3中也不推荐使用。

关于此处的4.3文档(http://hc.apache.org/httpcomponents-
client-4.3.x/tutorial/html/connmgmt.html#d5e473
),您可以通过以下方式重写它:

private HttpClient createHttpClientOrProxy() {

    HttpClientBuilder hcBuilder = HttpClients.custom();

    // Set HTTP proxy, if specified in system properties
    if( isSet(System.getProperty("http.proxyHost")) ) {
        int port = 80;
        if( isSet(System.getProperty("http.proxyPort")) ) {
            port = Integer.parseInt(System.getProperty("http.proxyPort"));
        }
        HttpHost proxy = new HttpHost(System.getProperty("http.proxyHost"), port, "http");
        DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
        hcBuilder.setRoutePlanner(routePlanner);
    }

    CloseableHttpClient httpClient = hcBuilder.build();

    return httpClient;
}


 类似资料:
  • 我的错误日志中出现了以下错误:woocommerce_product_tax_class从3.0.0版开始就不推荐使用了!改用woocommerce_product_get_tax_class。 我有以下功能来显示不同的用户角色不同的税务类。我可以直接将“woocommerce_product_tax_class”更改为“woocommerce_product_get_tax_class”吗?

  • 问题内容: 我发现这段代码的工作方式是,我可以以编程方式创建richfaces下拉菜单。但是不推荐使用某些代码。谁能告诉我要放什么而不是不赞成使用的电话? 谢谢 不推荐使用的代码行是: 问题答案: javadocs明确指出: 不推荐使用 。通过调用getExpressionFactory()然后 ExpressionFactory.createMethodExpression(javax.el.E

  • 问题内容: 我的Java代码中有一些不推荐使用的方法,如果有人可以在这里指导我,我将不胜感激。我有一个私有的Date变量: 在我的方法中,我声明了: 其他方法(例如和)也已弃用。 我知道我必须使用。如何在这里使用新代码?所有的setHours,getMinutes等都用上划线显示。 问题答案: 如果我正确理解了您的问题,这应该可以: 如果没有,您可以向我们显示要替换日期代码的完整方法吗? 编辑:这

  • 问题内容: 这个问题已经在这里有了答案 : 用preg_replace_callback替换preg_replace()e修饰符 (3个答案) 4年前关闭。 上面的代码在升级到PHP 5.5后给出了弃用警告: 不推荐使用 :preg_replace():不推荐使用/ e修饰符,而应使用preg_replace_callback 如何用替换代码? 问题答案: 您可以使用匿名函数将匹配项传递给函数:

  • Java9不推荐使用包含Java EE API的六个模块,它们将很快被删除: java.activation与包 java.corba带有、、和包 java.transaction,带有包 java.xml.bind与所有包一起 java.xml.ws(带有、、以及所有包) java.xml.ws.annotation与包 为了让收集KnowWeldge更容易,我用我目前所知道的来回答,并把答案做

  • 问题内容: Java 9 已弃用了六个包含Java EE API的模块,它们将很快被删除: 哪些维护的第三方工件提供了这些API?它们提供这些API的性能如何或它们必须提供哪些其他功能都没关系-重要的是,它们是这些模块/软件包的直接替代品吗? 为了更轻松地收集知识,我用到目前为止的知识进行了回答,并将答案设置为社区Wiki。我希望人们能扩展它而不是自己写答案。 在你投票关闭之前: 是的,各个模块上