On Thu, 2023-08-31 at 11:32 +0200, Konrad Windszus wrote:
> Hi Oleg,
> Thanks for the input.
> 
> > On 31. Aug 2023, at 11:17, Oleg Kalnichevski <ol...@apache.org>
> > wrote:
> > 
> > On Thu, 2023-08-31 at 10:08 +0200, Konrad Windszus wrote:
> > > Hi,
> > > I can pass a FutureCallback implementation to
> > > HttpAsyncClient.execute(…).
> > > However the javadoc at
> > > https://hc.apache.org/httpcomponents-core-5.1.x/current/httpcore5/apidocs/org/apache/hc/core5/concurrent/FutureCallback.html
> > >  is very sparse.
> > > Particularly the following questions are not answered:
> > > 
> > > 1) Is "completed(HttpResponse)" only called for success status
> > > codes
> > > or for all kinds server of responses? Would be good to mention
> > > that
> > > in
> > 
> > It is called for all valid final HTTP response messages (status
> > code =>
> > 200).
> 
> Then I guess
> https://hc.apache.org/httpcomponents-core-5.1.x/current/httpcore5/apidocs/org/apache/hc/core5/concurrent/FutureCallback.html#failed(java.lang.Exception)
>  is called for status code >= 300? How to access the response body
> there?
> > 

You guess it wrong. 3xx either get handled internally or get propagated
to the caller. 


> > > https://hc.apache.org/httpcomponents-client-5.2.x/current/httpclient5/apidocs/org/apache/hc/client5/http/impl/async/CloseableHttpAsyncClient.html
> > >  and other mentions of the execute method leveraging the
> > > parameter
> > > FutureCallback (because it seems to be specific to the
> > > FutureCallback
> > > being used from HttpAsyncClient.execute(…))
> > > 
> > > 2) What (unchecked) exception to throw in the FutureCallback
> > > method
> > > for the future to fail with ExecutionException.html. Does it
> > > matter?
> > > Is there any recommendation, e.g. if the HTTP endpoint returned a
> > > 500
> > > status? Maybe also the examples e.g. in
> > > https://github.com/apache/httpcomponents-client/blob/5.2.x/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientHttp1Pipelining.java
> > >  could be extended in this regard.
> > > 
> > 
> > You should consider returning a object with error information as a
> > result of the operation instead of throwing an unchecked exception
> > from
> > the callback. 
> Why is that? I want Future.get() to throw an exception in case of
> unexpected responses, otherwise callers you have to call Future.get()
> and in addition check that additional object.
> And I guess by "consider returning a object with error” you meant
> populating some error object, because none of the FutureCallback
> methods allow to return anything.
> 

If you are using blocking Futures for anything serious you are doing it
very, very wrong. Then you might be massively better off using the
classic APIs. 

Oleg 


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org

Reply via email to