I canot speak for HttpClient5, but If you are just looking to change some timeouts on the request, in 4.5.5, I do this (as recommended from this emai list some time ago!).
I guess its not too differenent for HC5 (?) - Create a shared HTTPClient instance. this is used by all requests in the JVM and is instantiated on first use. - each request (thread) grabs the shared client (it is thread safe) - each request (thread) creates its own request context - set the request type specific timeout on the request context (note internally in our app we apply different timeouts depending on several factors (message type,client etc)) - execute the request on the shared client with the request context Seems to work fine... Some snippets // in a client factory class I create the client based on sensible timeout defaults // this populates a static httpclient which can be returned by a static getClient method to all threads needing a httpClient CloseableHttpClient newClient = HttpClientBuilder.create().useSystemProperties() .setDefaultRequestConfig(config).setMaxConnPerRoute(maxConnectionsPerRoute) .setMaxConnTotal(totalMaxConnection).evictExpiredConnections() .evictIdleConnections(idleLife, TimeUnit.MINUTES).setConnectionTimeToLive(maxLife, TimeUnit.MINUTES) .build(); statichttpClient = newClient; // within the request httpClient = HttpClientFactory.getClient(); // create the context for this thread HttpClientContext httpContext = HttpClientContext.create(); httpContext.setRequestConfig(getRequestConfig()); HttpResponse serviceResponse = httpClient.execute(httpRequest, httpContext); // make the request config private RequestConfig getRequestConfig() throws PCEConfigParamNotFoundException { // setup request timeouts return RequestConfig.custom().setConnectionRequestTimeout(aaa). setConnectTimeout(bbb). setSocketTimeout(ccc).build(); } -----Original Message----- From: / [mailto:isla...@yahoo.co.uk.INVALID] Sent: Wednesday, May 16, 2018 4:01 PM To: httpclient-users@hc.apache.org Subject: Re: Fwd: HttpClient5 : simple example on how to configure timeout after build() Thanks, if I understood correctly, the pattern should be: 1) Create a RequestConfig (rc) object and keep it. 2) If you need to modify httpclient, modify the kept RequestConfig object 3) After doing said modifications **re-create httpclient** with kept RequestConfig. 4) Keep the RequestConfig. 5) Keeping a client and modifying it as see fit is/will be deprecated. Questions: can I extract a RequestConfig from current client, modify its timeout and then re-create a client with this cloned-and-modified RequestConfig? (so as not to keep a RequestConfig at all but remember all the settings I did to my client). thanks On 16/05/18 17:42, Shawn Heisey wrote: > On 5/16/2018 8:09 AM, / wrote: >> I am looking for an example on how to configure HttpClient5 after it >> has been built and how to extract/print some of its configuration. >> >> Once I have an HttpClient object, how do I go about and change some of >> its settings, for example connection timeout or user-agent-string or >> even cookie jar? >> >> I am looking for the most straight-forward and efficient way to do >> this. I don't care about "fluent" APIs neither about streams etc. >> >> something like: >> >> myclient.setParameter(connection_timeout, 1000); > > For the most part, you can't change settings on an existing HttpClient > object. Since about 4.3, the objects and methods that allow clients to > be changed after creation are all deprecated. That capability is > completely gone in 5.x. Default settings are managed with builder > objects using fluent methods, then you create the client object with the > indicated settings. Here's how I create a client object with explicit > defaults using non-deprecated code in the 4.5 version: > > RequestConfig rc = RequestConfig.custom().setConnectTimeout(15000) > .setSocketTimeout(120000).build(); > httpClient = HttpClients.custom().setDefaultRequestConfig(rc) > .setMaxConnPerRoute(300).setMaxConnTotal(5000).disableAutomaticRetries() > .build(); > > The httpClient field is an instance of HttpClient. I do not know what > kind of adjustments might need to be made for 5.x, but that should give > you an idea about how things are done since the way you're trying to do > it is no longer available. > > Many of the settings you might be interested in can also be changed at > the request level. I do not know HOW to do this, only that it CAN be > done. I think this is what Oleg was referring to in his reply. > > Thanks, > Shawn > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org > For additional commands, e-mail: httpclient-users-h...@hc.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org For additional commands, e-mail: httpclient-users-h...@hc.apache.org