On Sat, 2022-11-19 at 23:53 +0530, sreenivas somavarapu wrote:
> Hi Oleg,
> 
> How can we force to use a different protocols for different requests
> using
> same httpclient object is what I am looking for until now but was
> unscuccessful in finding any examples or achieving it using async
> httpclient implementation.

Protocol version is a connection property and not a request property.
Protocol version on the message level is merely a hint.

Oleg



> 
> Input request is not in my control. It could be from a HTTP 2 enabled
> client or from non enabled  client as well. My server supports both
> protocols and now as my application is reverse proxy it should make
> sure
> that error is returned if that protocol is not supported by actual
> server
> and if supported response should be provided back.
> 
> This is the reason I was trying to control it with below option but
> httpclient is itself throwing error.
> 
> *AsyncRequestBuilder* APIs *setVersion* method by using
> *HttpVersion.HTTP_2*
> or  *HttpVersion.HTTP_2_0* argument request is failing with
> *Unsupported
> version* error for a https url.
> 
> Regards,
> Sreenivas
> 
> On Sat, Nov 19, 2022, 11:37 PM Oleg Kalnichevski <[email protected]>
> wrote:
> 
> > On Sat, 2022-11-19 at 23:22 +0530, sreenivas somavarapu wrote:
> > > Hi Oleg,
> > > 
> > > Yes if actual server doesn't support the request should fail. As
> > > conveyed
> > > earlier I am trying simple reverse proxy application for which
> > > requirement
> > > is end to end flow should use same protocol. My application gets
> > > request
> > > from users and my application should make sure that same protocol
> > > should be
> > > used as in request when getting the response from different
> > > servers
> > > using
> > > httpclient. So I was checking the feasibility in httpclient
> > > classic /
> > > async
> > > implementations to see if I could achieve that using same
> > > httpclient
> > > method.
> > > 
> > > Regards,
> > > Sreenivas
> > > 
> > 
> > I am still confused. If you do not want protocol negotiation, just
> > do
> > not use it. If can force the desired protocol version.
> > 
> > Oleg
> > 
> > 
> > > On Sat, Nov 19, 2022, 11:13 PM Oleg Kalnichevski
> > > <[email protected]>
> > > wrote:
> > > 
> > > > On Sat, 2022-11-19 at 23:10 +0530, sreenivas somavarapu wrote:
> > > > > Hi Oleg,
> > > > > 
> > > > > Thank you for your reply.
> > > > > 
> > > > > My simple use case is I want to control on which channel /
> > > > > protocol
> > > > > (HTTP 1.x or HTTP 2) the requests should use using async
> > > > > httpclient
> > > > > api implementation irrespective of backend server enablement
> > > > > of
> > > > > that
> > > > > respective protocol.
> > > > 
> > > > This makes no sense. If the opposite endpoint does not support
> > > > H2
> > > > HttpClient will not be able to execute request with that
> > > > protocol.
> > > > 
> > > > Oleg
> > > > 
> > > > 
> > > > 
> > > > 
> > > > > Regards,
> > > > > Sreenivas
> > > > > 
> > > > > On Sat, Nov 19, 2022, 3:47 PM Oleg Kalnichevski
> > > > > <[email protected]>
> > > > > wrote:
> > > > > > On Fri, 2022-11-18 at 13:45 +0530, sreenivas somavarapu
> > > > > > wrote:
> > > > > > > Hi Oleg,
> > > > > > > 
> > > > > > > Thank you for your reply and conformation.
> > > > > > > 
> > > > > > > I was looking at async APIs on how to achieve both HTTP
> > > > > > > 1.x
> > > > > > > and
> > > > > > > HTTP
> > > > > > > 2
> > > > > > > support using same HttpAsyncClients builder but initial
> > > > > > > glance at
> > > > > > > APIs
> > > > > > > looks like it is not possible. Is my understanding
> > > > > > > correct?
> > > > > > 
> > > > > > 
> > > > > > No, it is not.
> > > > > > 
> > > > > > 
> > > > > > >   Below are
> > > > > > > different types of configurations I have used. Please let
> > > > > > > me
> > > > > > > know
> > > > > > > if
> > > > > > > you
> > > > > > > need my complete sample code? For these tests I was using
> > > > > > > IIS
> > > > > > > server
> > > > > > > with
> > > > > > > HTTP2 enabled and as well as
> > > > > > > https://hc.apache.org website as
> > > > > > > well.
> > > > > > > 
> > > > > > > I am trying with *setVersionPolicy* method on
> > > > > > > *HttpAsyncClients*
> > > > > > > API
> > > > > > > and if
> > > > > > > use *NEGOTIATE* version policy then it is working fine.
> > > > > > > If I
> > > > > > > use
> > > > > > > any
> > > > > > > of
> > > > > > > *FORCE_HTTP_** version policy then I am getting *400 bad
> > > > > > > request*.
> > > > > > > 
> > > > > > > If I keep it as *NEGOTIATE* and then try to force HTTP2
> > > > > > > request
> > > > > > > using
> > > > > > > *AsyncRequestBuilder* APIs setVersion method bu using
> > > > > > > *HttpVersion.HTTP_2*
> > > > > > > or  *HttpVersion.HTTP_2_0* argument request is failing
> > > > > > > with
> > > > > > > *Unsupported
> > > > > > > version* error.
> > > > > > > 
> > > > > > > My usecase is I have a small web app which will be used
> > > > > > > by
> > > > > > > users
> > > > > > > to
> > > > > > > get
> > > > > > > data from different servers. I am using httpclient here
> > > > > > > to
> > > > > > > get
> > > > > > > data
> > > > > > > from
> > > > > > > pre-configured servers which I even don't know before
> > > > > > > hand.
> > > > > > > Basically
> > > > > > > kind
> > > > > > > of reverse proxy. So if users request the data using HTTP
> > > > > > > 1.x
> > > > > > > I
> > > > > > > have
> > > > > > > to get
> > > > > > > data from backend server using HTTP 1.x only and vice-
> > > > > > > versa
> > > > > > > as
> > > > > > > well.
> > > > > > > 
> > > > > > > Thank you once again for the help you are providing.
> > > > > > > 
> > > > > > 
> > > > > > I am not sure I understand what your are trying to do here.
> > > > > > If
> > > > > > want
> > > > > > HttpClient to negotiate the protocol you need to use the
> > > > > > NEGOTIATE
> > > > > > protocol policy with HTTPS. One only needs to use
> > > > > > FORCE_HTTP_2
> > > > > > when
> > > > > > connecting to an HTTP/2 endpoint over HTTP (so called h2c).
> > > > > > 
> > > > > > Oleg
> > > > > > 
> > > > > > 
> > > > > > -----------------------------------------------------------
> > > > > > ----
> > > > > > ----
> > > > > > --
> > > > > > To unsubscribe, e-mail:
> > > > > > [email protected]
> > > > > > For additional commands, e-mail:
> > > > > > [email protected]
> > > > > > 
> > > > 
> > > > 
> > 
> > 
> > -------------------------------------------------------------------
> > --
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail:
> > [email protected]
> > 
> > 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to