the wording on this section is unclear to me - does "Also if set to true" (et seq.) apply to throwExcpetionOnFailure or to bridgeEndpoint?
| {{bridgeEndpoint}} | {{false}} | If true, HttpProducer will ignore the > Exchange.HTTP_URI header, and use the endpoint's URI for request. You may > also set the *throwExcpetionOnFailure* to be false to let the HttpProducer > send all fault responses back. Also if set to true HttpProducer and > CamelServlet will skip the gzip processing if the content-encoding is > "gzip". | > ~ Reuben On Wed, Apr 11, 2012 at 20:53, <conflue...@apache.org> wrote: > HTTP4 <https://cwiki.apache.org/confluence/display/CAMEL/HTTP4> Page * > edited* by Glen Mazza<https://cwiki.apache.org/confluence/display/%7Emazzag> > *Comment:* proofreading > > Changes (14) > ... > > {info:title=camel-http4 vs camel-jetty} > You can only produce to endpoints generated by the HTTP4 component. > Therefore it should never be used as input into your camel Routes. To > bind/expose an HTTP endpoint via a HTTP server as input to a camel route, > you can use the [Jetty Component|Jetty] > You can produce only to endpoints generated by the HTTP4 component. > Therefore it should never be used as input into your Camel Routes. To > bind/expose an HTTP endpoint via a HTTP server as input to a Camel route, > use the [Jetty Component|Jetty] instead. > {info} > > ... > | {{x509HostnameVerifier}} | {{BrowserCompatHostnameVerifier}} | *Camel > 2.7:* You can refer to a different > {{org.apache.http.conn.ssl.X509HostnameVerifier}} instance in the > [Registry] such as {{org.apache.http.conn.ssl.StrictHostnameVerifier}} or > {{org.apache.http.conn.ssl.AllowAllHostnameVerifier}}. | > | {{throwExceptionOnFailure}} | {{true}} | Option to disable throwing the > {{HttpOperationFailedException}} in case of failed responses from the > remote server. This allows you to get all responses regardless of the HTTP > status code. | > | {{bridgeEndpoint}} | {{false}} | If the option is true , HttpProducer > will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for > request. You may also set the *throwExcpetionOnFailure* to be false to let > the HttpProducer send all the fault response back. If the option is true, > HttpProducer and CamelServlet will skip the gzip processing if the > content-encoding is "gzip". | > | {{bridgeEndpoint}} | {{false}} | If true, HttpProducer will ignore the > Exchange.HTTP_URI header, and use the endpoint's URI for request. You may > also set the *throwExcpetionOnFailure* to be false to let the HttpProducer > send all fault responses back. Also if set to true HttpProducer and > CamelServlet will skip the gzip processing if the content-encoding is > "gzip". | > | {{disableStreamCache}} | {{false}} | DefaultHttpBinding will copy the > request input stream into a stream cache and put it into the message body > if this option is false to support read it twice, multiple reads,otherwise > DefaultHttpBinding will set the request input stream > directly into the message body. | > | {{httpBindingRef}} | {{null}} | Reference to a > {{org.apache.camel.component.http.HttpBinding}} in the [Registry]. Prefer > Recommended to use the {{httpBinding}} option instead. | > | {{httpBinding}} | {{null}} | To use a custom > {{org.apache.camel.component.http.HttpBinding}}. | > | {{httpClientConfigurerRef}} | {{null}} | Reference to a > {{org.apache.camel.component.http.HttpClientConfigurer}} in the [Registry]. > Prefer Recommended to use the {{httpClientConfigurer}} option instead. | > | {{httpContext}} | {{null}} | *Camel 2.9.2:* To use a custom > {{org.apache.http.protocol.HttpContext}} when executing requests. | > | {{httpContextRef}} | {{null}} | *Camel 2.9.2:* Reference to a custom > {{org.apache.http.protocol.HttpContext}} in the [Registry]. Prefer > Recommended to use the {{httpContext}} option instead. | > | {{httpClientConfigurer}} | {{null}} | Reference to a > {{org.apache.camel.component.http.HttpClientConfigurer}} in the [Registry]. > | > | {{httpClient.XXX}} | {{null}} | Setting options on the [BasicHttpParams| > http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/params/BasicHttpParams.html]. > For instance {{httpClient.soTimeout=5000}} will set the {{SO_TIMEOUT}} to 5 > seconds. Look on the setter methods of the following parameter beans for a > complete reference: [AuthParamBean| > http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/auth/params/AuthParamBean.html], > [ClientParamBean| > http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/params/ClientParamBean.html], > [ConnConnectionParamBean| > http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/conn/params/ConnConnectionParamBean.html], > [ConnRouteParamBean| > http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/conn/params/ConnRouteParamBean.html], > [CookieSpecParamBean| > http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/cookie/params/CookieSpecParamBean.html], > [HttpConnectionParamBean| > http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/params/HttpConnectionParamBean.html] > and [HttpProtocolParamBean| > http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/params/HttpProtocolParamBean.html] > | > ... > h3. Calling using GET or POST > > The following algorithm is used to determine if either whether the{{GET}} or > {{POST}} HTTP method should be used: > 1. Use method provided in header. > 2. {{GET}} if query string is provided in header. > ... > h3. How to set the http method (GET/POST/PUT/DELETE/HEAD/OPTIONS/TRACE) to > the HTTP producer > > The HTTP4 component provides a way to set the HTTP request method by > setting the message header. Here is an example;: > > {code} > ... > {code} > > h3. Using client tinmeout - SO_TIMEOUT > > See the [HttpSOTimeoutTest| > https://svn.apache.org/repos/asf/camel/trunk/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpSOTimeoutTest.java] > unit test. > ... > h4. Using proxy settings outside of URI > > To avoid the System properties conflicts, you can only set the proxy > configure from CameContext or URI. > To avoid System properties conflicts, you can set proxy configuration only > from the CamelContext or URI. > Java DSL : > {code} > ... > h4. Sample with scheduled poll > > The This sample polls the Google homepage every 10 seconds and write the > page to the file {{message.html}}: > {code} > from("timer://foo?fixedRate=true&delay=0&period=10000") > ... > Full Content > HTTP4 Component > > *Available as of Camel 2.3* > > The *http4:* component provides HTTP based > endpoints<https://cwiki.apache.org/confluence/display/CAMEL/Endpoint>for > consuming external HTTP resources (as a client to call external servers > using HTTP). > > Maven users will need to add the following dependency to their pom.xmlfor > this component: > > <dependency> > <groupId>org.apache.camel</groupId> > <artifactId>camel-http4</artifactId> > <version>x.x.x</version> > <!-- use the same version as your Camel core version --></dependency> > > *camel-http4 vs camel-http* > Camel-http4 uses HttpClient 4.x while camel-http uses HttpClient 3.x. > URI format > > http4:hostname[:port][/resourceUri][?options] > > Will by default use port 80 for HTTP and 443 for HTTPS. > > You can append query options to the URI in the following format, > ?option=value&option=value&... > *camel-http4 vs camel-jetty* > You can produce only to endpoints generated by the HTTP4 component. > Therefore it should never be used as input into your Camel Routes. To > bind/expose an HTTP endpoint via a HTTP server as input to a Camel route, > use the Jetty > Component<https://cwiki.apache.org/confluence/display/CAMEL/Jetty>instead. > HttpEndpoint Options > Name Default Value Description x509HostnameVerifier > BrowserCompatHostnameVerifier *Camel 2.7:* You can refer to a different > org.apache.http.conn.ssl.X509HostnameVerifier instance in the > Registry<https://cwiki.apache.org/confluence/display/CAMEL/Registry>such as > org.apache.http.conn.ssl.StrictHostnameVerifier or > org.apache.http.conn.ssl.AllowAllHostnameVerifier. > throwExceptionOnFailure true Option to disable throwing the > HttpOperationFailedException in case of failed responses from the remote > server. This allows you to get all responses regardless of the HTTP status > code. bridgeEndpoint false If true, HttpProducer will ignore the > Exchange.HTTP_URI header, and use the endpoint's URI for request. You may > also set the *throwExcpetionOnFailure* to be false to let the > HttpProducer send all fault responses back. Also if set to true > HttpProducer and CamelServlet will skip the gzip processing if the > content-encoding is "gzip". disableStreamCache false DefaultHttpBinding > will copy the request input stream into a stream cache > and put it into the message body if this option is false to support > multiple reads, otherwise DefaultHttpBinding will set the request input > stream directly in the message body. httpBindingRef null Reference to > a org.apache.camel.component.http.HttpBinding in the > Registry<https://cwiki.apache.org/confluence/display/CAMEL/Registry>. > Recommended to use the httpBinding option instead. httpBinding null To use > a custom > org.apache.camel.component.http.HttpBinding. httpClientConfigurerRef > null Reference to a org.apache.camel.component.http.HttpClientConfigurerin > the > Registry <https://cwiki.apache.org/confluence/display/CAMEL/Registry>. > Recommended to use the httpClientConfigurer option instead. httpContext > null *Camel 2.9.2:* To use a custom org.apache.http.protocol.HttpContextwhen > executing requests. > httpContextRef null *Camel 2.9.2:* Reference to a custom > org.apache.http.protocol.HttpContext in the > Registry<https://cwiki.apache.org/confluence/display/CAMEL/Registry>. > Recommended to use the httpContext option instead. httpClientConfigurer > null Reference to a org.apache.camel.component.http.HttpClientConfigurerin > the > Registry <https://cwiki.apache.org/confluence/display/CAMEL/Registry>. > httpClient.XXX null Setting options on the > BasicHttpParams<http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/params/BasicHttpParams.html>. > For instance httpClient.soTimeout=5000 will set the SO_TIMEOUT to 5 > seconds. Look on the setter methods of the following parameter beans for a > complete reference: > AuthParamBean<http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/auth/params/AuthParamBean.html>, > ClientParamBean<http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/params/ClientParamBean.html>, > ConnConnectionParamBean<http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/conn/params/ConnConnectionParamBean.html>, > ConnRouteParamBean<http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/conn/params/ConnRouteParamBean.html>, > CookieSpecParamBean<http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/cookie/params/CookieSpecParamBean.html>, > HttpConnectionParamBean<http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/params/HttpConnectionParamBean.html>and > HttpProtocolParamBean<http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/params/HttpProtocolParamBean.html> > clientConnectionManager null To use a custom > org.apache.http.conn.ClientConnectionManager. transferException false If > enabled and an > Exchange <https://cwiki.apache.org/confluence/display/CAMEL/Exchange>failed > processing on the consumer side, and if the caused > Exception was send back serialized in the response as a > application/x-java-serialized-object content type (for example using > Jetty<https://cwiki.apache.org/confluence/display/CAMEL/Jetty>or > SERVLET <https://cwiki.apache.org/confluence/display/CAMEL/SERVLET> Camel > components). On the producer side the exception will be deserialized and > thrown as is, instead of the HttpOperationFailedException. The caused > exception is required to be serialized. maxTotalConnections 200 The > maximum number of connections. connectionsPerRoute 20 The maximum > number of connections per route. sslContextParametersRef > null > *Camel 2.8:* Reference to a > org.apache.camel.util.jsse.SSLContextParameters in the > Registry<https://cwiki.apache.org/confluence/display/CAMEL/Registry>. > This reference overrides any configured SSLContextParameters at the > component level. See Using the JSSE Configuration > Utility<https://cwiki.apache.org/confluence#HTTP4-UsingtheJSSEConfigurationUtility> > . > > The following authentication options can also be set on the HttpEndpoint: > Setting Basic Authentication and Proxy > > *Before Camel 2.8.0* > Name Default Value Description username null Username for > authentication. password null Password for authentication. domain > null The domain name for authentication. host null The host name > authentication. proxyHost null The proxy host name proxyPort null The > proxy port number > proxyUsername null Username for proxy authentication proxyPassword > null Password for proxy authentication proxyDomain null The proxy > domain name proxyNtHost null The proxy Nt host name > > *Since Camel 2.8.0* > Name Default Value Description authUsername null Username for > authentication authPassword null Password for authentication > authDomain null The domain name for authentication authHost null The > host name authentication > proxyAuthHost null The proxy host name proxyAuthPort null The proxy > port number proxyAuthScheme null The proxy scheme, will fallback and > use the scheme from the endpoint if not configured. proxyAuthUsername > null Username for proxy authentication proxyAuthPassword null Password > for proxy authentication > proxyAuthDomain null The proxy domain name proxyAuthNtHost null The > proxy Nt host name > HttpComponent Options > Name Default Value Description httpBinding null To use a custom > org.apache.camel.component.http.HttpBinding. httpClientConfigurer null To > use a custom > org.apache.camel.component.http.HttpClientConfigurer. > httpConnectionManager null To use a custom > org.apache.commons.httpclient.HttpConnectionManager. httpContext null > *Camel 2.9.2:* To use a custom org.apache.http.protocol.HttpContext when > executing requests. x509HostnameVerifier null *Camel 2.7:* To use a > custom org.apache.http.conn.ssl.X509HostnameVerifier. > sslContextParameters > null > *Camel 2.8:* To configure a custom SSL/TLS configuration options at the > component level. See Using the JSSE Configuration > Utility<https://cwiki.apache.org/confluence#HTTP4-UsingtheJSSEConfigurationUtility>for > more details. > Message Headers > Name Type Description Exchange.HTTP_URI String URI to call. Will > override existing URI set directly on the endpoint. Exchange.HTTP_PATH > String Request URI's path, the header will be used to build the request > URI with the HTTP_URI. Exchange.HTTP_QUERY String URI parameters. > Will override existing URI parameters set directly on the endpoint. > Exchange.HTTP_RESPONSE_CODE int The HTTP response code from the > external server. Is 200 for OK. Exchange.HTTP_CHARACTER_ENCODING String > Character encoding. > Exchange.CONTENT_TYPE String The HTTP content type. Is set on both the > IN and OUT message to provide a content type, such as text/html. > Exchange.CONTENT_ENCODING String The HTTP content encoding. Is set on > both the IN and OUT message to provide a content encoding, such as gzip. > Message Body > > Camel will store the HTTP response from the external server on the OUT > body. All headers from the IN message will be copied to the OUT message, so > headers are preserved during routing. Additionally Camel will add the HTTP > response headers as well to the OUT message headers. > Response code > > Camel will handle according to the HTTP response code: > > - Response code is in the range 100..299, Camel regards it as a > success response. > - Response code is in the range 300..399, Camel regards it as a > redirection response and will throw a HttpOperationFailedExceptionwith the > information. > - Response code is 400+, Camel regards it as an external server > failure and will throw a HttpOperationFailedException with the > information. > *throwExceptionOnFailure* > The option, throwExceptionOnFailure, can be set to false to prevent > the HttpOperationFailedException from being thrown for failed response > codes. This allows you to get any response from the remote server. > There is a sample below demonstrating this. > > HttpOperationFailedException > > This exception contains the following information: > > - The HTTP status code > - The HTTP status line (text of the status code) > - Redirect location, if server returned a redirect > - Response body as a java.lang.String, if server provided a body as > response > > Calling using GET or POST > > The following algorithm is used to determine whether the GET or POST HTTP > method should be used: > 1. Use method provided in header. > 2. GET if query string is provided in header. > 3. GET if endpoint is configured with a query string. > 4. POST if there is data to send (body is not null). > 5. GET otherwise. > How to get access to HttpServletRequest and HttpServletResponse > > You can get access to these two using the Camel type converter system using > *NOTE* You can get the request and response not just from the processor > after the camel-jetty or camel-cxf endpoint. > > HttpServletRequest request = > exchange.getIn().getBody(HttpServletRequest.class); > HttpServletRequest response = > exchange.getIn().getBody(HttpServletResponse.class); > > Configuring URI to call > > You can set the HTTP producer's URI directly form the endpoint URI. In the > route below, Camel will call out to the external server, oldhost, using > HTTP. > > from("direct:start") > .to("http4://oldhost"); > > And the equivalent Spring sample: > > <camelContext xmlns="http://activemq.apache.org/camel/schema/spring"> > <route> > <from uri="direct:start"/> > <to uri="http4://oldhost"/> > </route></camelContext> > > You can override the HTTP endpoint URI by adding a header with the key, > HttpConstants.HTTP_URI, on the message. > > from("direct:start") > .setHeader(HttpConstants.HTTP_URI, constant("http://newhost")) > .to("http4://oldhost"); > > In the sample above Camel will call the http://newhost despite the > endpoint is configured with http4://oldhost. > Where Constants is the class, org.apache.camel.component.http4.Constants. > Configuring URI Parameters > > The *http* producer supports URI parameters to be sent to the HTTP > server. The URI parameters can either be set directly on the endpoint URI > or as a header with the key Exchange.HTTP_QUERY on the message. > > from("direct:start") > .to("http4://oldhost?order=123&detail=short"); > > Or options provided in a header: > > from("direct:start") > .setHeader(Exchange.HTTP_QUERY, > constant("order=123&detail=short")) > .to("http4://oldhost"); > > How to set the http method (GET/POST/PUT/DELETE/HEAD/OPTIONS/TRACE) to > the HTTP producer > > The HTTP4 component provides a way to set the HTTP request method by > setting the message header. Here is an example: > > from("direct:start") > .setHeader(Exchange.HTTP_METHOD, > constant(org.apache.camel.component.http4.HttpMethods.POST)) > .to("http4://www.google.com") .to("mock:results"); > > The method can be written a bit shorter using the string constants: > > .setHeader("CamelHttpMethod", constant("POST")) > > And the equivalent Spring sample: > > <camelContext xmlns="http://activemq.apache.org/camel/schema/spring"> > <route> > <from uri="direct:start"/> > <setHeader headerName="CamelHttpMethod"> > <constant>POST</constant> > </setHeader> > <to uri="http4://www.google.com"/> > <to uri="mock:results"/> > </route></camelContext> > > Using client timeout - SO_TIMEOUT > > See the > HttpSOTimeoutTest<https://svn.apache.org/repos/asf/camel/trunk/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpSOTimeoutTest.java>unit > test. > Configuring a Proxy > > The HTTP4 component provides a way to configure a proxy. > > from("direct:start") > > .to("http4://oldhost?proxyAuthHost=www.myproxy.com&proxyAuthPort=80"); > > There is also support for proxy authentication via the proxyAuthUsernameand > proxyAuthPassword options. > Using proxy settings outside of URI > > To avoid System properties conflicts, you can set proxy configuration only > from the CamelContext or URI. > Java DSL : > > context.getProperties().put("http.proxyHost", "172.168.18.9"); > context.getProperties().put("http.proxyPort" "8080"); > > Spring XML > > <camelContext> > <properties> > <property key="http.proxyHost" value="172.168.18.9"/> > <property key="http.proxyPort" value="8080"/> > </properties> > </camelContext> > > Camel will first set the settings from Java System or CamelContext > Properties and then the endpoint proxy options if provided. > So you can override the system properties with the endpoint options. > > Notice in *Camel 2.8* there is also a http.proxyScheme property you can > set to explicit configure the scheme to use. > Configuring charset > > If you are using POST to send data you can configure the charset using > the Exchange property: > > exchange.setProperty(Exchange.CHARSET_NAME, "ISO-8859-1"); > > Sample with scheduled poll > > This sample polls the Google homepage every 10 seconds and write the page > to the file message.html: > > from("timer://foo?fixedRate=true&delay=0&period=10000") > .to("http4://www.google.com") .setHeader(FileComponent.HEADER_FILE_NAME, > "message.html") > .to("file:target/google"); > > URI Parameters from the endpoint URI > > In this sample we have the complete URI endpoint that is just what you > would have typed in a web browser. Multiple URI parameters can of course be > set using the & character as separator, just as you would in the web > browser. Camel does no tricks here. > > // we query for Camel at the Google > pagetemplate.sendBody("http4://www.google.com/search?q=Camel", null); > > URI Parameters from the Message > > Map headers = new HashMap(); > headers.put(HttpProducer.QUERY, "q=Camel&lr=lang_en");// we query for Camel > and English language at > Googletemplate.sendBody("http4://www.google.com/search", null, headers); > > In the header value above notice that it should *not* be prefixed with ?and > you can separate parameters as usual with the > & char. > Getting the Response Code > > You can get the HTTP response code from the HTTP4 component by getting the > value from the Out message header with HttpProducer.HTTP_RESPONSE_CODE. > > Exchange exchange = template.send("http4://www.google.com/search", new > Processor() { public void process(Exchange exchange) throws > Exception { > exchange.getIn().setHeader(HttpProducer.QUERY, > constant("hl=en&q=activemq")); > } > }); > Message out = exchange.getOut(); > int responseCode = out.getHeader(HttpProducer.HTTP_RESPONSE_CODE, > Integer.class); > > Disabling Cookies > > To disable cookies you can set the HTTP Client to ignore cookies by adding > this URI option: > httpClient.cookiePolicy=ignoreCookies > Advanced Usage > > If you need more control over the HTTP producer you should use the > HttpComponent where you can set various classes to give you custom > behavior. > Using HTTPS to authenticate gotchas > > An end user reported that he had problem with authenticating with HTTPS. > The problem was eventually resolved when he discovered the HTTPS server did > not return a HTTP code 401 Authorization Required. The solution was to set > the following URI option: httpClient.authenticationPreemptive=true > Setting up SSL for HTTP Client Using the JSSE Configuration Utility > > As of Camel 2.8, the HTTP4 component supports SSL/TLS configuration > through the Camel JSSE Configuration > Utility<https://cwiki.apache.org/confluence/display/CAMEL/Camel+Configuration+Utilities>. > This utility greatly decreases the amount of component specific code you > need to write and is configurable at the endpoint and component levels. > The following examples demonstrate how to use the utility with the HTTP4 > component. > Programmatic configuration of the component > > KeyStoreParameters ksp = new KeyStoreParameters(); > ksp.setResource("/users/home/server/keystore.jks"); > ksp.setPassword("keystorePassword"); > > KeyManagersParameters kmp = new KeyManagersParameters(); > kmp.setKeyStore(ksp); > kmp.setKeyPassword("keyPassword"); > > SSLContextParameters scp = new SSLContextParameters(); > scp.setKeyManagers(kmp); > > HttpComponent httpComponent = getContext().getComponent("http4", > HttpComponent.class); > httpComponent.setSslContextParameters(scp); > > Spring DSL based configuration of endpoint > > ... > <camel:sslContextParameters > id="sslContextParameters"> > <camel:keyManagers > keyPassword="keyPassword"> > <camel:keyStore > resource="/users/home/server/keystore.jks" > password="keystorePassword"/> > </camel:keyManagers> > </camel:sslContextParameters>... > ... > <to > uri="https4://127.0.0.1/mail/?sslContextParametersRef=sslContextParameters"/>... > > Configuring Apache HTTP Client Directly > > Basically camel-http4 component is built on the top of Apache HTTP > client<http://hc.apache.org/>. > Please refer to SSL/TLS > customization<http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d4e537>for > details or have a look into the > org.apache.camel.component.http4.HttpsServerTestSupport unit test base > class. > You can also implement a custom > org.apache.camel.component.http4.HttpClientConfigurer to do some > configuration on the http client if you need full control of it. > > However if you *just* want to specify the keystore and truststore you can > do this with Apache HTTP HttpClientConfigurer, for example: > > KeyStore keystore = ...; > KeyStore truststore = ...; > > SchemeRegistry registry = new SchemeRegistry(); > registry.register(new Scheme("https", 443, new SSLSocketFactory(keystore, > "mypassword", truststore))); > > And then you need to create a class that implements HttpClientConfigurer, > and registers https protocol providing a keystore or truststore per example > above. Then, from your camel route builder class you can hook it up like so: > > HttpComponent httpComponent = getContext().getComponent("http4", > HttpComponent.class); > httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer()); > > If you are doing this using the Spring DSL, you can specify your > HttpClientConfigurer using the URI. For example: > > <bean id="myHttpClientConfigurer" > class="my.https.HttpClientConfigurer"> > </bean> > > <to > uri="https4://myhostname.com:443/myURL?httpClientConfigurer=myHttpClientConfigurer"/> > > As long as you implement the HttpClientConfigurer and configure your > keystore and truststore as described above, it will work fine. > Change Notification > Preferences<https://cwiki.apache.org/confluence/users/viewnotifications.action> > View Online <https://cwiki.apache.org/confluence/display/CAMEL/HTTP4> | View > Changes<https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=25200246&revisedVersion=7&originalVersion=6>| > Add > Comment<https://cwiki.apache.org/confluence/display/CAMEL/HTTP4?showComments=true&showCommentArea=true#addcomment> >