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.

Reply via email to