camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From souciance <souciance.eqdam.ras...@gmail.com>
Subject RE: Camel Http vs Camel Http4 - Content Type Header
Date Thu, 06 Apr 2017 06:05:48 GMT
Hi, I can take a look later during the day and get back to you.

Den 6 apr. 2017 7:44 fm skrev "Goyal, Arpit [via Camel]" <
ml-node+s465427n5797051h44@n5.nabble.com>:

> Hi souciance,
>
> Below is the complete test case I have written to debug this problem. You
> can import and fix the 'package' and 'logger' to remove errors.
> 'createRouteBuilder' method at the end has the two routes using camel-http
> and camel-http4. The URLs are constants.
>
> I am using the SAP Cloud Identity API [1] which expects Content-Type:
> application/scim+json. But if this is not given then it works fine. In case
> of camel-http4 we get 'text/plain' by default.
>
> Can't provide credential, you may be able to debug to see the 'Content
> Type' getting set with Camel-Http4 and not getting with Camel-Http
>
> Right now my need is to just make it empty like Camel-http. We HAD to move
> to camel-http4 because of SSL support. And now this one use-case isn't
> working :(
>
> Regards,
> Arpit.
>
> [1] - https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04fe
> b1/Cloud/en-US/2f215687fcf34170b0bbc8b36b60f2e9.html
>
>
> Complete test case
>
> import org.apache.camel.CamelContext;
> import org.apache.camel.EndpointInject;
> import org.apache.camel.Exchange;
> import org.apache.camel.Processor;
> import org.apache.camel.Produce;
> import org.apache.camel.ProducerTemplate;
> import org.apache.camel.builder.RouteBuilder;
> import org.apache.camel.component.direct.DirectEndpoint;
> import org.apache.camel.http.common.HttpOperationFailedException;
> import org.apache.camel.impl.DefaultCamelContext;
> import org.apache.camel.impl.DefaultExchange;
> import org.apache.camel.impl.SimpleRegistry;
> import org.apache.camel.testng.CamelTestSupport;
> import org.testng.annotations.Test;
>
> public class TestSCIMScenario extends CamelTestSupport {
>
>   static {
>     System.setProperty("javax.net.debug", "all");
>     System.setProperty("org.apache.commons.logging.Log",
> "org.apache.commons.logging.impl.SimpleLog");
>     System.setProperty("org.apache.commons.logging.simplelog.showdatetime",
> "true");
>     System.setProperty("org.apache.commons.logging.
> simplelog.log.org.apache.http", "DEBUG");
>   }
>
>   @EndpointInject(uri = "direct:startHttp")
>   protected DirectEndpoint startHttp;
>
>   @EndpointInject(uri = "direct:startHttp4")
>   protected DirectEndpoint startHttp4;
>
>   @Produce(uri = "direct:start")
>   protected ProducerTemplate producer;
>
>   /* Payload based on SAP Cloud Indentity REST API -
> https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04feb1/Cloud/en-US/
> 2f215687fcf34170b0bbc8b36b60f2e9.html */
>   private static final String SCIM_PAYLOAD = "{\r\n  \"userName\":
> \"alexAderson\",\r\n  \"name\": {\r\n    \"givenName\": \"Alex\",\r\n
>  \"familyName\": \"Anderson\",\r\n    \"honorificPrefix\": \"Mr.\"\r\n
>  },\r\n  \"emails\": [\r\n    {\r\n      \"value\": \"[hidden email]
> <http:///user/SendEmail.jtp?type=node&node=5797051&i=0>\"\r\n    }\r\n
>  ],\r\n  \"addresses\": [\r\n    {\r\n      \"type\": \"home\",\r\n
>  \"streetAddress\": \"1029 East River Drive\",\r\n      \"locality\":
> \"Street 301\",\r\n      \"region\": \"CA\",\r\n      \"postalCode\":
> \"94401\"\r\n    }\r\n  ],\r\n  \"phoneNumbers\": [],\r\n  \"displayName\":
> \"nosample\",\r\n  \"company\": \"YYY_USA\",\r\n  \"active\": true\r\n}";
>
>   /* Camel-Http4 based URL */
>   private static final String http4Endpoint = "https4://<tenant ID>.
> ondemand.com/service/scim/Users?proxyAuthHost=ppppp&proxyAuthPort=8888&
> proxyAuthScheme=http4&authUsername=xxxxxx&authPassword=yyyyy&
> httpClientConfigurer=#customConfigurer";
>
>   /* Camel-Http based URL */
>   private static final String httpEndpoint = "https://<tenant ID>.
> ondemand.com/service/scim/Users?proxyHost=ppppp&
> proxyPort=8888&authUsername=xxxxxx&authPassword=yyyyy&authMethod=Basic";
>
>   private static final Logger LOG = LogManager.getLogger();
>
>   @Test
>   public void testSCIMHttp() throws Exception {
>     DefaultExchange request = (DefaultExchange)
> producer.request(startHttp, new Processor() {
>
>       @Override
>       public void process(Exchange exchange) throws Exception {
>
>       }
>     });
>     if (request.getException() != null) {
>       throw request.getException();
>     }
>
>   }
>
>   @Test
>   public void testSCIMHttp4() throws Exception {
>     DefaultExchange request = (DefaultExchange)
> producer.request(startHttp4, new Processor() {
>
>       @Override
>       public void process(Exchange exchange) throws Exception {
>
>       }
>     });
>     if (request.getException() != null) {
>       throw request.getException();
>     }
>
>   }
>
>   protected CamelContext createCamelContext() throws Exception {
>     SimpleRegistry registry = new SimpleRegistry();
>     registry.put("customConfigurer", new CustomHttpClientConfigurer());
>     CamelContext cc = new DefaultCamelContext(registry);
>     return cc;
>   }
>
>   @Override
>   protected RouteBuilder createRouteBuilder() throws Exception {
>
>     return new RouteBuilder() {
>
>       @Override
>       public void configure() throws Exception {
>         onException(Exception.class).process(new Processor() {
>
>           @Override
>           public void process(Exchange exchange) throws Exception {
>             Exception exception = null;
>             if (exchange != null && exchange.getProperty(CAMEL_PROPERTY_EXCEPTION_CAUGHT)
> instanceof Exception) {
>               exception =  (Exception) exchange.getProperty(CAMEL_PROPERTY_EXCEPTION_CAUGHT);
>
>             }
>             if (exception instanceof HttpOperationFailedException) {
>               HttpOperationFailedException ex =
> (HttpOperationFailedException) exception;
>               LOG.info("*********************HTTP FAILED
> BEGIN*********************");
>               LOG.info("Status Code " + ex.getStatusCode() + " Status Text
> " + ex.getStatusText() + " Response Body " + ex.getResponseBody());
>               LOG.info("*********************HTTP FAILED
> END*********************");
>             }
>             if(exception != null) {
>               throw exception;
>             }
>           }
>         });
>
>         from(startHttp).setBody().constant(SCIM_PAYLOAD).to(httpEndpoint).process(new
> Processor() {
>
>           @Override
>           public void process(Exchange exchange) throws Exception {
>             LOG.info("*********************HTTP SUCCESS
> BEGIN*********************");
>             LOG.info(exchange.getIn().getBody(String.class));
>             LOG.info("*********************HTTP SUCCESS
> END*********************");
>           }
>         });
>
>         from(startHttp4).setBody().constant(SCIM_PAYLOAD).
> setHeader(Exchange.CONTENT_TYPE).constant(null).to(http4Endpoint);
>       }
>     };
>   }
> }
>
> -----Original Message-----
> From: souciance [mailto:[hidden email]
> <http:///user/SendEmail.jtp?type=node&node=5797051&i=1>]
> Sent: Tuesday, April 4, 2017 10:34 PM
> To: [hidden email] <http:///user/SendEmail.jtp?type=node&node=5797051&i=2>
> Subject: Re: Camel Http vs Camel Http4 - Content Type Header
>
> Can you share your entire route code?
>
> Den 5 apr. 2017 5:25 fm skrev "Goyal, Arpit [via Camel]" <
> [hidden email] <http:///user/SendEmail.jtp?type=node&node=5797051&i=3>>:
>
> > Anyone else has idea of this camel logic?
> >
> > Sent from my iPhone
> >
> > > On Apr 3, 2017, at 4:33 PM, Goyal, Arpit <[hidden email]
> > <http:///user/SendEmail.jtp?type=node&node=5796938&i=0>> wrote:
> > >
> > > Hi Claus,
> > >
> > > HttpProduce -- from camel-http4 library is setting the content-type
> > 'text/plain'  in method [1] line # 488 (camel version 2.16.3) even
> though
> > we have set the Content-Type to be NULL - This is NOT the case with
> > HttpProducer - from camel-http library.
> > >
> > > By enabling the apache commons log, the headers are clearly visible.
> > >
> > > The end-system we are invoking throws '415' due to the wrong Content
> > Type passed and if we DO NOT pass any content type it works. As at
> > execution time we can't determine the Content-Type, we want to pass it
> > NULL.
> > >
> > > Any possible way to achieve not sending of Content-Type header?
> > >
> > > 2017/04/04 00:48:55:618 CEST [DEBUG] headers - http-outgoing-0 >> POST
> > /service/scim/Users HTTP/1.1
> > > 2017/04/04 00:48:55:618 CEST [DEBUG] headers - http-outgoing-0 >>
> > breadcrumbId: ID-i044312-33503-1491259732621-0-1
> > > 2017/04/04 00:48:55:618 CEST [DEBUG] headers - http-outgoing-0 >>
> > Content-Length: 518
> > > 2017/04/04 00:48:55:618 CEST [DEBUG] headers - http-outgoing-0 >>
> > Content-Type: text/plain                            ---- in this line.
> > > 2017/04/04 00:48:55:618 CEST [DEBUG] headers - http-outgoing-0 >>
> Host:
> > xxxxxxx
> > > 2017/04/04 00:48:55:618 CEST [DEBUG] headers - http-outgoing-0 >>
> > Connection: Keep-Alive
> > > 2017/04/04 00:48:55:618 CEST [DEBUG] headers - http-outgoing-0 >>
> > User-Agent: Apache-HttpClient/4.5.2 (Java/1.7.0_101)
> > > 2017/04/04 00:48:55:618 CEST [DEBUG] headers - http-outgoing-0 >>
> > Accept-Encoding: gzip,deflate
> > > 2017/04/04 00:48:55:618 CEST [DEBUG] headers - http-outgoing-0 >>
> > Authorization: Basic XXXXXXXX
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >> "POST
> > /service/scim/Users HTTP/1.1[\r][\n]"
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >>
> > "breadcrumbId: ID-i044312-33503-1491259732621-0-1[\r][\n]"
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >>
> > "Content-Length: 518[\r][\n]"
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >>
> > "Content-Type: text/plain[\r][\n]"                        --- in this
> line
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >> "Host:
> > xxxxxxxxx[\r][\n]"
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >>
> > "Connection: Keep-Alive[\r][\n]"
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >>
> > "User-Agent: Apache-HttpClient/4.5.2 (Java/1.7.0_101)[\r][\n]"
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >>
> > "Accept-Encoding: gzip,deflate[\r][\n]"
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >>
> > "Authorization: Basic XXXXXXXX[\r][\n]"
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >>
> > "[\r][\n]"
> > > 2017/04/04 00:48:55:619 CEST [DEBUG] wire - http-outgoing-0 >>
> > "{[\r][\n]"
> > > 2017/04/04 00:48:55:620 CEST [DEBUG] wire - http-outgoing-0 >> "}"
> > >
> > > [1] - org.apache.camel.component.http4.HttpProducer.createRequestEntity(Exchange)
>
> >
> > >
> > > Regards,
> > > Arpit.
> > >
> > >
> > > -----Original Message-----
> > > From: souciance [mailto:[hidden email]
> > <http:///user/SendEmail.jtp?type=node&node=5796938&i=1>]
> > > Sent: Thursday, February 9, 2017 1:40 PM
> > > To: [hidden email]
> > <http:///user/SendEmail.jtp?type=node&node=5796938&i=2>
> > > Subject: Re: Camel Http vs Camel Http4 - Content Type Header
> > >
> > > Well it should be pretty easy to setup a http server and see what
> > headers
> > > your route are sending and compare that to what the actual server
> wants.
> > If
> > > camel-http4 is suppressing some headers then perhaps try another
> > component.
> > >
> > > On Thu, Feb 9, 2017 at 10:32 PM, Goyal, Arpit [via Camel] <
> > > [hidden email] <http:///user/SendEmail.jtp?type=node&node=5796938&i=3>>
>
> > wrote:
> > >
> > >> Hi,
> > >>
> > >> We were on Camel-Http (2.16) and moving to Camel-Http4 (2.16) and saw
> > that
> > >> URL which worked with Camel-http now fails with Camel-Http4 with
> status
> > >> code - 415 (Unsupported Media Type).
> > >>
> > >> Caused by: org.apache.camel.http.common.HttpOperationFailedException:
>
> > >> HTTP operation failed invoking https://<host>:<port>/
> > >> myservice/Users?authMethod=Basic with statusCode: 415
> > >>
> > >> Saw this discussion on Nabble - http://camel.465427.n5.nabble.
> > >> com/Http4-Set-Header-Content-Type-not-passing-through-to-
> > >> the-HTTP-Request-td5746414.html#a5752856
> > >>
> > >> Does this mean we CAN"T USE - Camel-HTTP4 ?
> > >>
> > >> Regards,
> > >> Arpit.
> > >>
> > >>
> > >> ------------------------------
> > >> If you reply to this email, your message will be added to the
> > discussion
> > >> below:
> > >> http://camel.465427.n5.nabble.com/Camel-Http-vs-Camel-Http4-
> > >> Content-Type-Header-tp5793736.html
> > >> To start a new topic under Camel - Users, email
> > >> [hidden email] <http:///user/SendEmail.jtp?type=node&node=5796938&i=4>
>
> > >> To unsubscribe from Camel - Users, click here
> > >> <
> > >> .
> > >> NAML
> > >> <http://camel.465427.n5.nabble.com/template/
> > NamlServlet.jtp?macro=macro_viewer&id=instant_html%
> > 21nabble%3Aemail.naml&base=nabble.naml.namespaces.
> > BasicNamespace-nabble.view.web.template.NabbleNamespace-
> > nabble.view.web.template.NodeNamespace&breadcrumbs=
> > notify_subscribers%21nabble%3Aemail.naml-instant_emails%
> > 21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
> > >>
> > >
> > >
> > >
> > >
> > > --
> > > View this message in context: http://camel.465427.n5.nabble.
> > com/Camel-Http-vs-Camel-Http4-Content-Type-Header-tp5793736p5793737.html
>
> > > Sent from the Camel - Users mailing list archive at Nabble.com.
> >
> >
> > ------------------------------
> > If you reply to this email, your message will be added to the discussion
> > below:
> > http://camel.465427.n5.nabble.com/Camel-Http-vs-Camel-Http4-
> > Content-Type-Header-tp5793736p5796938.html
> > To start a new topic under Camel - Users, email
> > [hidden email] <http:///user/SendEmail.jtp?type=node&node=5797051&i=4>
> > To unsubscribe from Camel - Users, click here
> > <
> > .
> > NAML
> > <http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=macro_
> viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.
> BasicNamespace-nabble.view.web.template.NabbleNamespace-
> nabble.view.web.template.NodeNamespace&breadcrumbs=
> notify_subscribers%21nabble%3Aemail.naml-instant_emails%
> 21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
> >
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.
> com/Camel-Http-vs-Camel-Http4-Content-Type-Header-tp5793736p5796944.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
> ------------------------------
> If you reply to this email, your message will be added to the discussion
> below:
> http://camel.465427.n5.nabble.com/Camel-Http-vs-Camel-Http4-
> Content-Type-Header-tp5793736p5797051.html
> To start a new topic under Camel - Users, email
> ml-node+s465427n465428h31@n5.nabble.com
> To unsubscribe from Camel - Users, click here
> <http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=465428&code=c291Y2lhbmNlLmVxZGFtLnJhc2h0aUBnbWFpbC5jb218NDY1NDI4fDE1MzI5MTE2NTY=>
> .
> NAML
> <http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>




--
View this message in context: http://camel.465427.n5.nabble.com/Camel-Http-vs-Camel-Http4-Content-Type-Header-tp5793736p5797052.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message