On Wed, 2018-05-16 at 15:56 +0000, Daly, Paul wrote: > 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... >
+1. Precisely how it was intended. Oleg > 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(max > ConnectionsPerRoute) > .setMaxConnTotal(totalMaxConnection).evictExpiredConnec > tions() > .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).disableAutomaticRetr > > ies() > > .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.or > > g > > > > --------------------------------------------------------------------- > 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 > --------------------------------------------------------------------- To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org For additional commands, e-mail: httpclient-users-h...@hc.apache.org