Hi Can you try with
<setHeader headerName="CamelHttpUri"> <simple>https://myapp.com${header.employeeName}?size=${header.size}</simple> </setHeader> On Fri, Oct 21, 2016 at 7:04 AM, bcwajapey <[email protected]> wrote: > Hi All, > > I am using camel to call REST URLs. In doing so, I am setting the > CamelHttpUri header to override the URI. This works properly with http/https > (Http client 3.x). However, it fails for http4/https4 (Http Client 4.x). > Below is the stack trace for https4 > > Stacktrace > --------------------------------------------------------------------------------------------------------------------------------------- > java.lang.RuntimeException: java.lang.reflect.InvocationTargetException > at > org.apache.camel.component.http.HttpMethods.createMethod(HttpMethods.java:49) > at > org.apache.camel.component.http.HttpProducer.createMethod(HttpProducer.java:391) > at > org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:95) > at > org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) > at > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) > at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163) > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:542) > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:120) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:83) > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) > at > org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62) > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97) > at > org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:529) > at > org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:497) > at > org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:365) > at > org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:497) > at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:209) > at > org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:139) > at > org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:125) > at > org.apache.camel.example.osgi.MyRouteBuilder.executeCamelRoutes(MyRouteBuilder.java:79) > at > org.apache.camel.example.osgi.MyRouteBuilder.main(MyRouteBuilder.java:51) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at > com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) > Caused by: java.lang.reflect.InvocationTargetException > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at java.lang.reflect.Constructor.newInstance(Constructor.java:422) > at > org.apache.camel.component.http.HttpMethods.createMethod(HttpMethods.java:47) > ... 28 more > Caused by: java.lang.IllegalStateException: unsupported protocol: 'https4' > at > org.apache.commons.httpclient.protocol.Protocol.lazyRegisterProtocol(Protocol.java:149) > at > org.apache.commons.httpclient.protocol.Protocol.getProtocol(Protocol.java:117) > at org.apache.commons.httpclient.HttpHost.<init>(HttpHost.java:107) > at > org.apache.commons.httpclient.HttpMethodBase.setURI(HttpMethodBase.java:280) > at > org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:220) > at > org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:89) > ... 33 more > > > *The camel script that I am using is as below -* > > <?xml version="1.0" encoding="UTF-8"?> > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:camel="http://camel.apache.org/schema/spring" > xsi:schemaLocation=" > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans.xsd > http://camel.apache.org/schema/spring > http://camel.apache.org/schema/spring/camel-spring.xsd"> > > <camelContext xmlns="http://camel.apache.org/schema/spring" > trace="true"> > <camel:template id="camelTemplate"/> > > <route id="route1"> > <from uri="direct:start"/> > <setHeader headerName="CamelHttpMethod"> > <constant>GET</constant> > </setHeader> > > <to > uri="https4://myapp.com/resource/v2/user?throwExceptionOnFailure=false"/> > > <setHeader headerName="employeeName"> > > <jsonpath>$.consumer[0].employees[0].resources.employeeName</jsonpath> > </setHeader> > > <setHeader headerName="CamelHttpMethod"> > <constant>GET</constant> > </setHeader> > <setHeader headerName="CamelHttpUri"> > > <simple>https4://myapp.com${header.employeeName}?size=${header.size}</simple> > </setHeader> > <to uri="https4://myapp.com"/> > </route> > </camelContext> > > </beans> > > *Also, I have included the dependency for camel-http4. Version = 2.18.0* > > <dependency> > <groupId>org.apache.camel</groupId> > <artifactId>camel-http4</artifactId> > <version>2.18.0</version> > </dependency> > > Can you please tell me what is wrong with the camel script? > > *Note: This camel script works if I use http instead of http4.* > > Thanks, > Brahmachaitanya > > > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/java-lang-IllegalStateException-unsupported-protocol-https4-tp5789058.html > Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2
