HttpClient.getParams() deprecated. What should I use instead?

前端 未结 1 1234
孤独总比滥情好
孤独总比滥情好 2020-12-05 23:00

I am using apache-httpclient-4.3. I would analyze a http request, in particular the query string parameters, but

@Deprecated
public HttpParams getParams()
De         


        
相关标签:
1条回答
  • 2020-12-05 23:25

    You can use an URIBuilder object

    URIBuilder builder = new URIBuilder("http://example.com/");
    builder.setParameter("var1", "value1").setParameter("var2", "value2");
    
    HttpGet request = new HttpGet(builder.build());
    
    // get back the url parameters   
    List<NameValuePair> params = builder.getQueryParams();
    

    I think you are a bit confused about the getParams() method from the client or HttpMethod, getParams() does not return the URL parameters or something like that, returns the client parameteres like connection timeout, proxy, cookies... etc

    Before 4.3.2 you could set the parameters to the client using the getParams() method (deprecated now), after 4.3.2 you can set the request params via the RequestConfig class using a Builder

    Builder requestConfigBuilder = RequestConfig.custom();
    requestConfigBuilder.setConnectionRequestTimeout(1000).setMaxRedirects(1);
    

    and then set to the HttpMethod only (not to client like before)

    request.setConfig(requestConfigBuilder.build());
    

    Update:

    If you want to get the URI parameters from an HttpGet or HttPost request object you can use the URIBuilder in the same way

    HttpGet request = new HttpGet("http://example.com/?var=1&var=2");
    
    URIBuilder newBuilder = new URIBuilder(request.getURI());
    List<NameValuePair> params = newBuilder.getQueryParams(); 
    
    0 讨论(0)
提交回复
热议问题