How do I replace Deprecated httpClient.getParams() with RequestConfig?

28,620

Solution 1

You are using apache HttpClient 4.3 library with apache HttpClient 4.2 code.

Please notice that getParams() and ConnRoutePNames are not the only deprecated methods in your case. The DefaultHttpClient class itself rely on 4.2 implementation and is also deprecated in 4.3.

In regard to the 4.3 documentation here (http://hc.apache.org/httpcomponents-client-4.3.x/tutorial/html/connmgmt.html#d5e473), you can rewrite it this way:

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;
}

Solution 2

This is more of a follow-up to the answer given by @Stephane Lallemagne

There is a much conciser way of making HttpClient pick up system proxy settings

CloseableHttpClient client = HttpClients.custom()
        .setRoutePlanner(
             new SystemDefaultRoutePlanner(ProxySelector.getDefault()))
        .build();

or this if you want an instance of HttpClient fully configured with system defaults

CloseableHttpClient client = HttpClients.createSystem();
Share:
28,620

Related videos on Youtube

peter.murray.rust
Author by

peter.murray.rust

for details and photo: Wikipedia entry

Updated on July 09, 2022

Comments

  • peter.murray.rust
    peter.murray.rust almost 2 years

    I have inherited the code

    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() is @Deprecated and reads "

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

    There are no class docs for RequestConfig and I do not know what method should be used to replace getParams() and ConnRoutePNames.DEFAULT_PROXY.

  • boly38
    boly38 over 8 years
    Thanks; Oleg I just reuse your answer here