Hi Souciance, Any luck in solving the puzzle?
Regards, Arpit. -----Original Message----- From: souciance [mailto:[email protected]] Sent: Wednesday, April 5, 2017 11:06 PM To: [email protected] Subject: RE: Camel Http vs Camel Http4 - Content Type Header 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]" < [email protected]>: > 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 > [email protected] > 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.
