I'd recommend trying with a more recent version of CXF to see if it's a bug
that's been fixed subsequent to 3.1.7.

Colm.

On Wed, May 1, 2019 at 4:28 AM Pablo Caballero <[email protected]> wrote:

> Hi community!
>
> cxf version being used: 3.1.7
>
> - I'm using cxf as a rest client (Proxy based)
> - The server that my client is interacting with returns a 301 (let's
> suposse I can't avoid or circunvent that 301 by any way)
> - At first, the rest invocation was failing with an exception
> - I forced redirects with httpClientPolicy.setAutoRedirect(true) and
> everything worked as expected. Hooray!
> - But soon I realized that requests following the first one were failing
> with 404 Boo Hoo!
> - What I can see is that request following the first one are being directed
> to a wrong URL
> - I suspect that URL is being "constructed" by CXF from the experience
> gained after the first redirect (in order to avoid networks round trips)
> - Let's see an example:
>
> - First request to
>
> http://x.x.x.x/QNet24/services/rest/api/datosCheque?cbu=4310001322100000003060&cuit=27237145874&cantidad=10&tipo=CPD
> - Response 301 Location:
>
> http://x.x.x.x/QNet24/servicesrest/api/datosCheque/?cbu=4310001322100000003060&cuit=27237145874&cantidad=10&tipo=CPD
> - The 301 is honored by CXF and then a 200 response is received. Good!
>
> - Second request to the same interface method
> - URL used:
>
> http://x.x.x.x/QNet24/servicesrest/api/datosCheque/api/datosCheque?cbu=4310001322100000003060&cbu=4310001322100000003060&cuit=27237145874&cuit=27237145874&cantidad=10&cantidad=10&tipo=CPD&tipo=CPD
> - Notice the "double" api/datosCheque and the duplicated query string
> parameters.
>
> - Moreover if a invoque the other interface method the URL being used is:
>
> http://x.x.x.x/QNet24/servicesrest/api/datosCheque/api/negociacion?cbu=4310001322100000003060&cuit=27237145874&cantidad=10&tipo=CPD
> (instead of http://x.x.x.x/QNet24/servicesrest/api/negociacion)
>
> Here it is my interface
>
> @Path("/api")
> @Consumes("application/json")
> @Produces("application/json")
> public interface BancoService {
>
> @Path("/datosCheque")
> @GET
> public Response getNumeracion(
> @QueryParam("cbu") String cbu,
> @QueryParam("cuit") String cuit,
> @QueryParam("cantidad") int cantidad,
> @QueryParam("tipo") String tipo);
>
> @Path("/negociacion")
> @POST
> public Response negociacion(NegociacionBanco negociacion);
>
> }
>
> - Is there something I can do to solve this?
>
> - I thought about using apache http client and let it handle the redirect
> stuff but looking at the code (AsyncHTTPConduitFactory) I see that a
> bogus RedirectStrategy is being used and I'm not being able to figure out
> if I could change it (to apache http client DefaultRedirectStrategy for
> example) or I'd mess it up doing so.
>
> Thanks in advance!
>
> Regards!
>
> Pablo
>


-- 
Colm O hEigeartaigh

Talend Community Coder
http://coders.talend.com

Reply via email to