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, <[email protected]> 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>
>