Modified: websites/production/camel/content/http.html
==============================================================================
--- websites/production/camel/content/http.html (original)
+++ websites/production/camel/content/http.html Thu Jun  8 21:20:41 2017
@@ -86,7 +86,7 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="HTTP-HTTPComponent">HTTP 
Component</h2><p>The <strong>http:</strong> component provides HTTP based <a 
shape="rect" href="endpoint.html">endpoints</a> for consuming external HTTP 
resources (as a client to call external servers using HTTP).</p><p>Maven users 
will need to add the following dependency to their <code>pom.xml</code> for 
this component:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h2 id="HTTP-HTTPComponent">HTTP 
Component</h2><p>The <strong>http:</strong> component provides HTTP based <a 
shape="rect" href="endpoint.html">endpoints</a> for consuming external HTTP 
resources (as a client to call external servers using HTTP).</p><p>Maven users 
will need to add the following dependency to their 
<strong><code>pom.xml</code></strong> for this component:</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-http&lt;/artifactId&gt;
@@ -94,16 +94,16 @@
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><h3 id="HTTP-URIformat">URI format</h3><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="HTTP-URIFormat">URI Format</h3><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[http:hostname[:port][/resourceUri][?param1=value1][&amp;param2=value2]
 ]]></script>
-</div></div><p>Will by default use port 80 for HTTP and 443 for HTTPS.</p><div 
class="confluence-information-macro 
confluence-information-macro-information"><p class="title">camel-http vs 
camel-jetty</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>You can only produce to endpoints 
generated by the HTTP 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 <a shape="rect" href="jetty.html">Jetty 
Component</a> or the <a shape="rect" href="servlet.html">Servlet 
Component</a></p></div></div><h3 id="HTTP-Examples">Examples</h3><p>Call the 
url with the body using POST and return response as out message. If body is 
null call URL using GET and return response as out message</p><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class=
 "confluenceTh"><p>Java DSL</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Spring DSL</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div><p>Will by default use port&#160;<strong><code>80</code></strong> 
for HTTP and&#160;<strong><code>443</code></strong> for HTTPS.</p><div 
class="confluence-information-macro 
confluence-information-macro-information"><p class="title">camel-http vs 
camel-jetty</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>You can only produce to endpoints 
generated by the HTTP 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 <a shape="rect" href="jetty.html">Jetty 
Component</a> or the <a shape="rect" href="servlet.html">Servlet 
Component</a></p></div></div><h3 id="HTTP-Examples">Examples</h3><p>Call the 
URL with the body using&#160;<strong><code>POST</code></strong> and return 
response as the&#160;<strong><code>OUT</code></strong> message. If body 
is&#160;<strong><code
 >null</code></strong> call URL using&#160;<strong><code>GET</code></strong> 
 >and return response as&#160;<strong><code>OUT</code></strong> 
 >message:</p><div class="table-wrap"><table 
 >class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
 >class="confluenceTh"><p>Java DSL</p></th><th colspan="1" rowspan="1" 
 >class="confluenceTh"><p>Spring DSL</p></th></tr><tr><td colspan="1" 
 >rowspan="1" class="confluenceTd"><div class="code panel pdl" 
 >style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[from(&quot;direct:start&quot;)
   .to(&quot;http://myhost/mypath&quot;);]]></script>
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;from uri=&quot;direct:start&quot;/&gt;
 &lt;to uri=&quot;http://oldhost&quot;/&gt;]]></script>
-</div></div></td></tr></tbody></table></div><p>You can override the HTTP 
endpoint URI by adding a header. Camel will call the <a shape="rect" 
class="external-link" href="http://newhost"; rel="nofollow">http://newhost</a>. 
This is very handy for e.g. REST urls.</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Java DSL</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div></td></tr></tbody></table></div><p>You can override the HTTP 
endpoint URI by adding a header. Camel will call the <a shape="rect" 
class="external-link" href="http://newhost"; rel="nofollow">http://newhost</a>. 
This is very handy for e.g. REST URLs.</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Java DSL</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[from(&quot;direct:start&quot;)
   .setHeader(Exchange.HTTP_URI, 
simple(&quot;http://myserver/orders/${header.orderId}&quot;))
   .to(&quot;http://dummyhost&quot;);]]></script>
@@ -114,7 +114,7 @@ from(&quot;direct:start&quot;)
   .setHeader(Exchange.HTTP_QUERY, 
constant(&quot;order=123&amp;detail=short&quot;))
   .to(&quot;http://oldhost&quot;);
 ]]></script>
-</div></div></td></tr></tbody></table></div><p>Set the HTTP request method to 
POST</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Java DSL</p></th><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Spring DSL</p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div></td></tr></tbody></table></div><p>Set the HTTP request method to 
<strong><code>POST</code></strong>:</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Java DSL</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Spring DSL</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[from(&quot;direct:start&quot;)
   .setHeader(Exchange.HTTP_METHOD, constant(&quot;POST&quot;))
   .to(&quot;http://www.google.com&quot;);
@@ -127,27 +127,27 @@ from(&quot;direct:start&quot;)
 &lt;to uri=&quot;http://www.google.com&quot;/&gt;
 &lt;to uri=&quot;mock:results&quot;/&gt;
 ]]></script>
-</div></div></td></tr></tbody></table></div><h3 
id="HTTP-HttpEndpointOptions">HttpEndpoint Options</h3><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>throwExceptionOnFailure</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Option to disable throwing the 
<code>HttpOperationFailedException</code> in case of failed responses from the 
remote server. This allows you to get all responses regardless of the HTTP 
status code.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>bridgeEndpoint</code></p></td><td colspan="1" 
rowspan="1" class="confluenc
 eTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>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 * throwExceptionOnFailure* to be false to let the HttpProducer send all 
the fault response back. <br clear="none" class="atl-forced-newline"> 
<strong>Camel 2.3:</strong> If the option is true, HttpProducer and 
CamelServlet will skip the gzip processing if the content-encoding is 
"gzip".</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>disableStreamCache</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>DefaultHttpBinding will copy the request 
input stream into a stream cache and put it into message body if this option is 
false to support read it twice, otherwise DefaultHttpBinding will set the 
request input stream direct into the message bo
 dy. <strong>Camel 2.17:</strong> this options is now also support by the 
producer to allow using the response stream directly instead of stream caching 
as by default.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><s><code>httpBindingRef</code></s></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><s><code>null</code></s></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><s><strong>Deprecated and removed in Camel 
2.17:</strong> Reference to a 
<code>org.apache.camel.component.http.HttpBinding</code> in the <a shape="rect" 
href="registry.html">Registry</a>. Use the <code>httpBinding</code> option 
instead.</s></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpBinding</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Reference to a 
<code>org.apache.camel.component.http.HttpBinding</code> in the <
 a shape="rect" href="registry.html">Registry</a>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><s><code>httpClientConfigurerRef</code></s></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><s><code>null</code></s></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><s><strong>Deprecated and removed in Camel 
2.17:</strong> Reference to a 
<code>org.apache.camel.component.http.HttpClientConfigurer</code> in the <a 
shape="rect" href="registry.html">Registry</a>. Use the 
<code>httpClientConfigurer</code> option instead.</s></p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpClientConfigurer</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> 
Reference to a 
<code>org.apache.camel.component.http.HttpClientConfigurer</code> in the <a 
shape="rect" href="registry.html">Registry</a>.</p></td></tr><tr><td c
 olspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpClient.XXX</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Setting options on the <a shape="rect" 
class="external-link" 
href="http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/params/HttpClientParams.html";>HttpClientParams</a>.
 For instance <code>httpClient.soTimeout=5000</code> will set the 
<code>SO_TIMEOUT</code> to 5 seconds.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>clientConnectionManager</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>To use a custom 
<code>org.apache.http.conn.ClientConnectionManager</code>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>transferException</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>fal
 se</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.6:</strong> If enabled and an <a 
shape="rect" href="exchange.html">Exchange</a> failed processing on the 
consumer side, and if the caused <code>Exception</code> was send back 
serialized in the response as a 
<code>application/x-java-serialized-object</code> content type (for example 
using <a shape="rect" href="jetty.html">Jetty</a> or <a shape="rect" 
href="servlet.html">SERVLET</a> Camel components). On the producer side the 
exception will be deserialized and thrown as is, instead of the 
<code>HttpOperationFailedException</code>. The caused exception is required to 
be serialized.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>headerFilterStrategy</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> 
Reference to a instance of <code>org.apache.camel.spi.H
 eaderFilterStrategy</code> in the <a shape="rect" 
href="registry.html">Registry</a>. It will be used to apply the custom 
headerFilterStrategy on the new create HttpEndpoint.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>urlRewrite</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> 
<strong>Producer only</strong> Refers to a custom 
<code>org.apache.camel.component.http.UrlRewrite</code> which allows you to 
rewrite urls when you bridge/proxy endpoints. See more details at <a 
shape="rect" href="urlrewrite.html">UrlRewrite</a> and <a shape="rect" 
href="how-to-use-camel-as-a-http-proxy-between-a-client-and-server.html">How to 
use Camel as a HTTP proxy between a client and server</a>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><code>eagerCheckContentAvailable</code></td><td 
colspan="1" rowspan="1" class="confluenceTd"
 ><code>false</code></td><td colspan="1" rowspan="1" 
 >class="confluenceTd"><strong>Camel 2.15.3/2.16:</strong> <strong>Consumer 
 >only</strong> &#160;Whether to eager check whether the HTTP requests has 
 >content if the content-length header is 0 or not present. &#160;This can be 
 >turned on in case HTTP clients do not send streamed data.</td></tr><tr><td 
 >colspan="1" rowspan="1" class="confluenceTd"><code>copyHeaders</code></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><code>true</code></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong> 
 >&#160;If this option is true then IN exchange headers will be copied to OUT 
 >exchange headers according to copy strategy. Setting this to false, allows to 
 >only include the headers from the HTTP response (not propagating IN 
 >headers).</td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><code>okStatusCodeRange</code></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><code>200-299</code></td><td colspan="1" 
 >rowsp
 an="1" class="confluenceTd"><strong>Camel 2.16:</strong> The status codes 
which is considered a success response. The values are inclusive. The range 
must be defined as from-to with the dash included.</td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><code>ignoreResponseBody</code></td><td 
colspan="1" rowspan="1" class="confluenceTd"><code>false</code></td><td 
colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong> If 
this option is true, The http producer won't read response body and cache the 
input stream.</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>cookieHandler</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code>null</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><strong>Camel: 2.19:</strong> Configure a cookie handler 
to maintain a HTTP session</td></tr></tbody></table></div></div>
+</div></div></td></tr></tbody></table></div><h3 
id="HTTP-HttpEndpointOptions">HttpEndpoint Options</h3><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>throwExceptionOnFailure</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Option to disable throwing the 
<strong><code>HttpOperationFailedException</code></strong> in case of failed 
responses from the remote server. This allows you to get all responses 
regardless of the HTTP status code.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>bridgeEndpoint</code></p></td><td 
colspan="1" rowspan="1"
  class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>If the option 
is&#160;<strong><code>true</code></strong>,&#160;<strong><code>HttpProducer</code></strong>
 will ignore the&#160;<strong><code>Exchange.HTTP_URI</code></strong> header, 
and use the endpoint's URI for request. You may also set 
<strong><code>throwExceptionOnFailure=false</code></strong> to let 
the&#160;<strong><code>HttpProducer</code></strong> send all the fault response 
back. <br clear="none" class="atl-forced-newline"> </p><p>From<strong> Camel 
2.3:</strong> If the option is 
<strong><code>true</code></strong>,&#160;<strong><code>HttpProducer</code></strong>
 and&#160;<strong><code>CamelServlet</code></strong> will skip the gzip 
processing when 
<strong><code>content-encoding=gzip</code></strong>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>disableStreamCache</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</
 code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong><code>DefaultHttpBinding</code></strong> will 
copy the request input stream into a stream cache and put it into message body 
if this option is false to support read it twice, 
otherwise&#160;<strong><code>DefaultHttpBinding</code></strong> will set the 
request input stream direct into the message body. </p><p>From<strong> Camel 
2.17:</strong> this options is now also support by the producer to allow using 
the response stream directly instead of stream caching as by 
default.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><span style="color: 
rgb(255,0,0);"><s><code>httpBindingRef</code></s></span></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><s><code>null</code></s></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><span style="color: 
rgb(255,0,0);"><s><strong>Deprecated and removed in Camel 2.17:</strong> 
Reference to a <code>org.apache.camel.component.http.HttpBind
 ing</code> in the <a shape="rect" href="registry.html"><span style="color: 
rgb(255,0,0);">Registry</span></a>. Use the <code>httpBinding</code> option 
instead.</s></span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpBinding</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Reference to a 
<strong><code>org.apache.camel.component.http.HttpBinding</code></strong> in 
the <a shape="rect" href="registry.html">Registry</a>.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: 
rgb(255,0,0);"><s><code>httpClientConfigurerRef</code></s></span></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><s><code>null</code></s></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><span style="color: 
rgb(255,0,0);"><s><strong>Deprecated and removed in Camel 2.17:</strong> 
Reference to a <code>org.a
 pache.camel.component.http.HttpClientConfigurer</code> in the <a shape="rect" 
href="registry.html"><span style="color: rgb(255,0,0);">Registry</span></a>. 
Use the <code>httpClientConfigurer</code> option 
instead.</s></span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpClientConfigurer</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> 
Reference to a 
<strong><code>org.apache.camel.component.http.HttpClientConfigurer</code></strong>
 in the <a shape="rect" href="registry.html">Registry</a>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpClient.XXX</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Setting options on the <a shape="rect" 
class="external-link" href="http://hc.apache.org/httpclient-3.x/apidocs/or
 
g/apache/commons/httpclient/params/HttpClientParams.html">HttpClientParams</a>. 
For instance <strong><code>httpClient.soTimeout=5000</code></strong> will set 
the <strong><code>SO_TIMEOUT</code></strong> to 5 seconds.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>clientConnectionManager</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>To use a custom 
<strong><code>org.apache.http.conn.ClientConnectionManager</code></strong>.</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>transferException</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> If enabled and 
an <a shape="rect" href="exchange.html">Exchange</a> failed processing on the 
consumer side, and if the caused <strong><code>Exception</code></strong> was 
send ba
 ck serialized in the response as a 
<strong><code>application/x-java-serialized-object</code></strong> content type 
(for example using <a shape="rect" href="jetty.html">Jetty</a> or <a 
shape="rect" href="servlet.html">SERVLET</a> Camel components).</p><p>On the 
producer side the exception will be deserialized and thrown as is, instead of 
the <strong><code>HttpOperationFailedException</code></strong>. The caused 
exception is required to be serialized.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>headerFilterStrategy</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> 
Reference to a instance of 
<strong><code>org.apache.camel.spi.HeaderFilterStrategy</code></strong> in the 
<a shape="rect" href="registry.html">Registry</a>. It will be used to apply the 
custom&#160;<strong><code>headerFilterStrategy</code></strong> on the new 
create <stron
 g><code>HttpEndpoint</code></strong>.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>urlRewrite</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> 
<strong>Producer only</strong> Refers to a custom 
<strong><code>org.apache.camel.component.http.UrlRewrite</code></strong> which 
allows you to rewrite URLs when you bridge/proxy endpoints.</p><p>See more 
details at <a shape="rect" href="urlrewrite.html">UrlRewrite</a> and <a 
shape="rect" 
href="how-to-use-camel-as-a-http-proxy-between-a-client-and-server.html">How to 
use Camel as a HTTP proxy between a client and server</a>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>eagerCheckContentAvailable</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.15.3/2.
 16:</strong> <strong>Consumer only</strong> &#160;Whether to eager check 
whether the HTTP requests has content if 
the&#160;<strong><code>content-length</code></strong> header is 0 or not 
present. This can be turned on in case HTTP clients do not send streamed 
data.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>copyHeaders</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> &#160;If this 
option is true then&#160;<strong><code>IN</code></strong> exchange headers will 
be copied to&#160;<strong><code>OUT</code></strong> exchange headers according 
to copy strategy. Setting this to false, allows to only include the headers 
from the HTTP response (not propagating&#160;<strong><code>IN</code></strong> 
headers).</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>okStatusCodeRange</code></p></td><td colspan="1" 
rowspan="
 1" class="confluenceTd"><p><code>200-299</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> The status 
codes which is considered a success response. The values are inclusive. The 
range must be defined as from-to with the dash included.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>ignoreResponseBody</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> If this option 
is true, The&#160;<strong><code>HttpProducer</code></strong> won't read 
response body and cache the input stream.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>cookieHandler</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel: 2.19:</strong> 
Configure a cookie handler to maintain a HTTP session<
 /p></td></tr></tbody></table></div></div>
 
 
-<h3 id="HTTP-AuthenticationandProxy">Authentication and Proxy</h3><p>The 
following authentication options can also be set on the HttpEndpoint:</p><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>authMethod</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Authentication method, either 
as <code>Basic</code>, <code>Digest</code> or 
<code>NTLM</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>authMethodPriority</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="
 confluenceTd"><p>Priority of authentication methods. Is a list separated with 
comma. For example: <code>Basic,Digest</code> to exclude 
<code>NTLM</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>authUsername</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Username for 
authentication</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>authPassword</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Password for 
authentication</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>authDomain</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Domain for NTML 
authentication</p></td></tr><tr><td colspan="1" rowspan="1" class="conflue
 nceTd"><p><code>authHost</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Optional host for NTML 
authentication</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyHost</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The proxy host name</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyPort</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The proxy port number</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyAuthMethod</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Authentication method for proxy, either as 
<code>Ba
 sic</code>, <code>Digest</code> or <code>NTLM</code>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyAuthUsername</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Username for proxy 
authentication</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyAuthPassword</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Password for proxy 
authentication</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyAuthDomain</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Domain for proxy NTML 
authentication</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyAuthHost</code></p></td><td colspan="1" 
rowspa
 n="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Optional host for proxy NTML 
authentication</p></td></tr></tbody></table></div></div>
+<h3 id="HTTP-AuthenticationandProxy">Authentication and Proxy</h3><p>The 
following authentication options can also be set on the 
<strong><code>HttpEndpoint</code></strong>:</p><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>authMethod</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Authentication method, either 
as <strong><code>Basic</code></strong>, <strong><code>Digest</code></strong> or 
<strong><code>NTLM</code></strong>.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>authMethodPriority</code></p></td><td 
colspan="1" rowspan="1" clas
 s="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Priority of authentication methods. Is a list separated 
with comma.</p><p>For example: 
<code><strong>Basic</strong>,<strong>Digest</strong></code> to exclude 
<strong><code>NTLM</code></strong>.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>authUsername</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Username for 
authentication.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>authPassword</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Password for 
authentication.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>authDomain</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><t
 d colspan="1" rowspan="1" class="confluenceTd"><p>Domain 
for&#160;<strong><code>NTLM</code></strong> 
authentication.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>authHost</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Optional host 
for&#160;<strong><code>NTLM</code></strong> 
authentication.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyHost</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The proxy host name.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyPort</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The proxy port number.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><cod
 e>proxyAuthMethod</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Authentication method for proxy, either as 
<strong><code>Basic</code></strong>, <strong><code>Digest</code></strong> or 
<strong><code>NTLM</code></strong>.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>proxyAuthUsername</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Username for proxy 
authentication.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyAuthPassword</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Password for proxy 
authentication.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyAuthDomain</code></p></td><td colspan="1" 
rowspan="1
 " class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Domain for 
proxy&#160;<strong><code>NTLM</code></strong> 
authentication.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>proxyAuthHost</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Optional host for 
proxy&#160;<strong><code>NTLM</code></strong> 
authentication.</p></td></tr></tbody></table></div></div>
 
 
-<p>When using authentication you <strong>must</strong> provide the choice of 
method for the <code>authMethod</code> or <code>authProxyMethod</code> 
options.<br clear="none"> You can configure the proxy and authentication 
details on either the <code>HttpComponent</code> or the 
<code>HttpEndoint</code>. Values provided on the <code>HttpEndpoint</code> will 
take precedence over <code>HttpComponent</code>. Its most likely best to 
configure this on the <code>HttpComponent</code> which allows you to do this 
once.</p><p>The <a shape="rect" href="http.html">HTTP</a> component uses 
convention over configuration which means that if you have not explicit set a 
<code>authMethodPriority</code> then it will fallback and use the select(ed) 
<code>authMethod</code> as priority as well. So if you use 
<code>authMethod.Basic</code> then the <code>auhtMethodPriority</code> will be 
<code>Basic</code> only.</p><p>Note: camel-http is based on HttpClient v3.x and 
as such has only <a shape="rect" class="exte
 rnal-link" 
href="http://hc.apache.org/httpclient-3.x/authentication.html#NTLM";>limited 
support</a> for what is known as NTLMv1, the early version of the NTLM 
protocol. It does not support NTLMv2 at all. Camel-http4 has support for 
NTLMv2.</p><h3 id="HTTP-HttpComponentOptions">HttpComponent Options</h3><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>httpBinding</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>To use a custom 
<code>org.apache.camel.component.http.HttpBinding</code>.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>httpClient
 Configurer</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>To use a custom 
<code>org.apache.camel.component.http.HttpClientConfigurer</code>.</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpConnectionManager</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>To use a custom 
<code>org.apache.commons.httpclient.HttpConnectionManager</code>.</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpConfiguration</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>To use a custom 
<code>org.apache.camel.component.http.HttpConfiguration</code></p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><code>allowJavaSerializedObject</code></td><td cols
 pan="1" rowspan="1" class="confluenceTd"><code>false</code></td><td 
colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 
2.16.1/2.15.5:</strong>&#160;Whether to allow java serialization when a request 
uses context-type=application/x-java-serialized-object. This is by default 
turned off. If you enable this then be aware that Java will deserialize the 
incoming data from the request to Java and that can be a potential security 
risk.</td></tr></tbody></table></div></div>
+<p>When using authentication you <strong>must</strong> provide the choice of 
method for the <strong><code>authMethod</code></strong> or 
<strong><code>authProxyMethod</code></strong> options. You can configure the 
proxy and authentication details on either the 
<strong><code>HttpComponent</code></strong> or the 
<strong><code>HttpEndoint</code></strong>. Values provided on the 
<strong><code>HttpEndpoint</code></strong> will take precedence over 
<strong><code>HttpComponent</code></strong>. Its most likely best to configure 
this on the <strong><code>HttpComponent</code></strong> which allows you to do 
this once.</p><p>The <a shape="rect" href="http.html">HTTP</a> component uses 
convention over configuration which means that if you have not explicit set a 
<strong><code>authMethodPriority</code></strong> then it will fallback and use 
the select(ed) <strong><code>authMethod</code></strong> as priority as well. So 
if you use <strong><code>authMethod.Basic</code></strong> then the <strong><co
 de>auhtMethodPriority</code></strong> will be 
<strong><code>Basic</code></strong> only.</p><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><strong>Note</strong>:&#160;<strong><code>camel-http</code></strong>
 is based on HttpClient v3.x and as such has only <a shape="rect" 
class="external-link" 
href="http://hc.apache.org/httpclient-3.x/authentication.html#NTLM";>limited 
support</a> for what is known as NTLMv1, the early version of the NTLM 
protocol. It does not support NTLMv2 at all. 
<strong><code>camel-http4</code></strong> has support for 
NTLMv2.</div></div><h3 id="HTTP-HttpComponentOptions">HttpComponent 
Options</h3><div class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
 class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>httpBinding</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>To use a custom 
<strong><code>org.apache.camel.component.http.HttpBinding</code></strong>.</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpClientConfigurer</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>To use a custom 
<strong><code>org.apache.camel.component.http.HttpClientConfigurer</code></strong>.</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpConnectionManager</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class
 ="confluenceTd"><p>To use a custom 
<strong><code>org.apache.commons.httpclient.HttpConnectionManager</code></strong>.</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpConfiguration</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>To use a custom 
<strong><code>org.apache.camel.component.http.HttpConfiguration.</code></strong></p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><code>allowJavaSerializedObject</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><code>false</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 
2.16.1/2.15.5:</strong>&#160;Whether to allow java serialization when a request 
uses 
<strong><code>context-type=application/x-java-serialized-object</code></strong>.</p><p>If
 you enable this then be aware that Java will deserialize the incoming data 
from the request to Java and that can be a pote
 ntial security risk.</p></td></tr></tbody></table></div></div>
 
 
-<p><code>HttpConfiguration</code> contains all the options listed in the table 
above under the section <em>HttpConfiguration - Setting Authentication and 
Proxy</em>.</p><h3 id="HTTP-MessageHeaders">Message Headers</h3><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Exchange.HTTP_URI</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>URI to call. Will override 
existing URI set directly on the endpoint. <span>This uri is the uri of the 
http server to call. Its not the same as the Camel endpoint uri, where you can 
configure endpoint options such as security etc. This header do
 es not support that, its only the uri of the http 
server.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_METHOD</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>HTTP Method / Verb to use 
(GET/POST/PUT/DELETE/HEAD/OPTIONS/TRACE)</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Exchange.HTTP_PATH</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Request URI's path, the header 
will be used to build the request URI with the HTTP_URI. <strong>Camel 
2.3.0:</strong> If the path is start with "/", http producer will try to find 
the relative path based on the Exchange.HTTP_BASE_URI header or the 
exchange.getFromEndpoint().getEndpointUri();</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Exchange.HTTP
 _QUERY</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>URI parameters. Will override existing URI parameters 
set directly on the endpoint.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_RESPONSE_CODE</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>int</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The HTTP response code from the 
external server. Is 200 for OK.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_CHARACTER_ENCODING</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Character encoding.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>Exchange.CONTENT_TYPE</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>Str
 ing</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The 
HTTP content type. Is set on both the IN and OUT message to provide a content 
type, such as <code>text/html</code>.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>Exchange.CONTENT_ENCODING</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The HTTP content encoding. Is 
set on both the IN and OUT message to provide a content encoding, such as 
<code>gzip</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_SERVLET_REQUEST</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>HttpServletRequest</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The <code>HttpServletRequest</code> 
object.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_SERVLET_RESPONSE</code></p></td><td 
co
 lspan="1" rowspan="1" 
class="confluenceTd"><p><code>HttpServletResponse</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The 
<code>HttpServletResponse</code> object.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_PROTOCOL_VERSION</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> You 
can set the http protocol version with this header, eg. "HTTP/1.0". If you 
didn't specify the header, HttpProducer will use the default value 
"HTTP/1.1"</p></td></tr></tbody></table></div></div>
+<p><code>HttpConfiguration</code> contains all the options listed in the table 
above under the section <em>HttpConfiguration - Setting Authentication and 
Proxy</em>.</p><h3 id="HTTP-MessageHeaders">Message Headers</h3><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Exchange.HTTP_URI</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>URI to call. Will override 
existing URI set directly on the endpoint. <span>This URI is the URI of the 
HTTP server to call. Its not the same as the Camel endpoint URI, where you can 
configure endpoint options such as security etc. This header do
 es not support that, its only the URI of the HTTP 
server.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_METHOD</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>HTTP Method / Verb to use 
(<code>GET</code>/<code>POST</code>/<code>PUT</code>/<code>DELETE</code>/<code>HEAD</code>/<code>OPTIONS</code>/<code>TRACE</code>)</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_PATH</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Request URI's path, the header will be used 
to build the request URI with the <strong><code>HTTP_URI</code></strong>. 
<strong>Camel 2.3.0:</strong> If the path is start with "/", http producer will 
try to find the relative path based on 
the&#160;<strong><code>Exchange.HTTP_BASE_URI</code><
 /strong> header or the 
<strong><code>exchange.getFromEndpoint().getEndpointUri();</code></strong>.</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_QUERY</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>URI parameters. Will override 
existing URI parameters set directly on the endpoint.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_RESPONSE_CODE</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>int</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The HTTP response code from the 
external server. Is&#160;<strong><code>200</code></strong> for 
OK.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_CHARACTER_ENCODING</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan
 ="1" class="confluenceTd"><p>Character encoding.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.CONTENT_TYPE</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The HTTP content type. Is set 
on both the&#160;<strong><code>IN</code></strong> 
and&#160;<strong><code>OUT</code></strong> message to provide a content type, 
such as <strong><code>text/html</code></strong>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.CONTENT_ENCODING</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The HTTP content encoding. Is 
set on both the&#160;<strong><code>IN</code></strong> 
and&#160;<strong><code>OUT</code></strong> message to provide a content 
encoding, such as <strong><code>gzip</code>.</strong></p></td></tr><tr><td 
colspan="1" rowspa
 n="1" 
class="confluenceTd"><p><code>Exchange.HTTP_SERVLET_REQUEST</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>HttpServletRequest</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The 
<strong><code>HttpServletRequest</code></strong> object.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_SERVLET_RESPONSE</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>HttpServletResponse</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The 
<strong><code>HttpServletResponse</code></strong> object.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange.HTTP_PROTOCOL_VERSION</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> You 
can set the HTTP protocol version with this header, e.g., 
<strong><code>HTTP/1.0</code></strong>. 
 If you didn't specify the 
header,&#160;<strong><code>HttpProducer</code></strong> will use the default 
value 
<strong><code>HTTP/1.1</code></strong>.</p></td></tr></tbody></table></div></div>
 
 
-<p>The header name above are constants. For the spring DSL you have to use the 
value of the constant instead of the name.</p><h3 id="HTTP-MessageBody">Message 
Body</h3><p>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.</p><h3 
id="HTTP-Responsecode">Response code</h3><p>Camel will handle according to the 
HTTP response code:</p><ul class="alternate"><li>Response code is in the range 
100..299, Camel regards it as a success response.</li><li>Response code is in 
the range 300..399, Camel regards it as a redirection response and will throw a 
<code>HttpOperationFailedException</code> with the 
information.</li><li><p>Response code is 400+, Camel regards it as an external 
server failure and will throw a <code>HttpOperationFailedException</code> with 
the information.</p
 ><div class="confluence-information-macro confluence-information-macro-tip"><p 
 >class="title">throwExceptionOnFailure</p><span class="aui-icon aui-icon-small 
 >aui-iconfont-approve confluence-information-macro-icon"></span><div 
 >class="confluence-information-macro-body"><p>The option, 
 ><code>throwExceptionOnFailure</code>, can be set to <code>false</code> to 
 >prevent the <code>HttpOperationFailedException</code> from being thrown for 
 >failed response codes. This allows you to get any response from the remote 
 >server.<br clear="none"> There is a sample below demonstrating 
 >this.</p></div></div></li></ul><h3 
 >id="HTTP-HttpOperationFailedException">HttpOperationFailedException</h3><p>This
 > exception contains the following information:</p><ul 
 >class="alternate"><li>The HTTP status code</li><li>The HTTP status line (text 
 >of the status code)</li><li>Redirect location, if server returned a 
 >redirect</li><li>Response body as a <code>java.lang.String</code>, if server 
 >provided a body as response</li></ul
 ><h3 id="HTTP-CallingusingGETorPOST">Calling using GET or POST</h3><p>The 
 >following algorithm is used to determine if either <code>GET</code> or 
 ><code>POST</code> HTTP method should be used:<br clear="none"> 1. Use method 
 >provided in header.<br clear="none"> 2. <code>GET</code> if query string is 
 >provided in header.<br clear="none"> 3. <code>GET</code> if endpoint is 
 >configured with a query string.<br clear="none"> 4. <code>POST</code> if 
 >there is data to send (body is not null).<br clear="none"> 5. 
 ><code>GET</code> otherwise.</p><h3 
 >id="HTTP-HowtogetaccesstoHttpServletRequestandHttpServletResponse">How to get 
 >access to HttpServletRequest and HttpServletResponse</h3><p>You can get 
 >access to these two using the Camel type converter system using</p><div 
 >class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
 >panelContent pdl">
+<p>The header name above are constants. For the spring DSL you have to use the 
value of the constant instead of the name.</p><h3 id="HTTP-MessageBody">Message 
Body</h3><p>Camel will store the HTTP response from the external server on 
the&#160;<strong><code>OUT</code></strong> body. All headers from 
the&#160;<strong><code>IN</code></strong> message will be copied to 
the&#160;<strong><code>OUT</code></strong> message, so headers are preserved 
during routing. Additionally Camel will add the HTTP response headers as well 
to the&#160;<strong><code>OUT</code></strong> message headers.</p><h3 
id="HTTP-ResponseCode">Response Code</h3><p>Camel will handle according to the 
HTTP response code:</p><ul class="alternate"><li>Response code is in the range 
<strong><code>100..299</code></strong>, Camel regards it as a success 
response.</li><li>Response code is in the range 
<strong><code>300..399</code></strong>, Camel regards it as a redirection 
response and will throw a <strong><code>HttpOperationF
 ailedException</code></strong> with the information.</li><li><p>Response code 
is <strong><code>400+</code></strong>, Camel regards it as an external server 
failure and will throw a 
<strong><code>HttpOperationFailedException</code></strong> with the 
information.</p><div class="confluence-information-macro 
confluence-information-macro-tip"><p 
class="title">throwExceptionOnFailure</p><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The option, 
<strong><code>throwExceptionOnFailure</code>, </strong>can be set to 
<strong><code>false</code></strong> to prevent the 
<strong><code>HttpOperationFailedException</code></strong> from being thrown 
for failed response codes. This allows you to get any response from the remote 
server.<br clear="none"> There is a sample below demonstrating 
this.</p></div></div></li></ul><h3 
id="HTTP-HttpOperationFailedException">HttpOperationFailedException</h3><p>Th
 is exception contains the following information:</p><ul 
class="alternate"><li>The HTTP status code.</li><li>The HTTP status line (text 
of the status code).</li><li>Redirect location, if server returned a 
redirect.</li><li>Response body as a 
<strong><code>java.lang.String</code></strong>, if server provided a body as 
response.</li></ul><h3 id="HTTP-CallingusingGETorPOST">Calling 
using&#160;<code>GET</code> or&#160;<code>POST</code></h3><p>The following 
algorithm is used to determine if either <strong><code>GET</code></strong> or 
<strong><code>POST</code></strong> HTTP method should be used:</p><ol><li>Use 
method provided in header.</li><li><strong><code>GET</code></strong> if query 
string is provided in header.</li><li><strong><code>GET</code></strong> if 
endpoint is configured with a query 
string.</li><li><strong><code>POST</code></strong> if there is data to send 
(body is not null).</li><li><strong><code>GET</code></strong> 
otherwise.</li></ol><h3 id="HTTP-HowAccesstheHttpServletRe
 questandHttpServletResponse">How Access the <code>HttpServletRequest</code> 
and&#160;<code>HttpServletResponse</code></h3><p>You can get access to these 
two using the Camel type converter system using:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[HttpServletRequest request = 
exchange.getIn().getBody(HttpServletRequest.class);
 HttpServletRequest response = 
exchange.getIn().getBody(HttpServletResponse.class);
 ]]></script>
-</div></div><h3 id="HTTP-Usingclienttimeout-SO_TIMEOUT">Using client timeout - 
SO_TIMEOUT</h3><p>See the unit test in <a shape="rect" class="external-link" 
href="http://svn.apache.org/viewvc?view=rev&amp;revision=781775";>this 
link</a></p><h2 id="HTTP-MoreExamples">More Examples</h2><h3 
id="HTTP-ConfiguringaProxy">Configuring a Proxy</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Java DSL</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="HTTP-UsingClientTimeout-SO_TIMEOUT">Using Client Timeout 
-&#160;<code>SO_TIMEOUT</code></h3><p>See the unit test in <a shape="rect" 
class="external-link" 
href="http://svn.apache.org/viewvc?view=rev&amp;revision=781775";>this 
link</a></p><h2 id="HTTP-MoreExamples">More Examples</h2><h3 
id="HTTP-ConfiguringaProxy">Configuring a Proxy</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Java DSL</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[from(&quot;direct:start&quot;)
   .to(&quot;http://oldhost?proxyHost=www.myproxy.com&amp;proxyPort=80&quot;);
 ]]></script>
-</div></div></td></tr></tbody></table></div><p>There is also support for proxy 
authentication via the <code>proxyUsername</code> and 
<code>proxyPassword</code> options.</p><h4 
id="HTTP-UsingproxysettingsoutsideofURI">Using proxy settings outside of 
URI</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Java DSL</p></th><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Spring DSL</p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div></td></tr></tbody></table></div><p>There is also support for proxy 
authentication via the <strong><code>proxyUsername</code></strong> and 
<strong><code>proxyPassword</code></strong> options.</p><h4 
id="HTTP-UsingProxySettingsOutsideoftheURI">Using Proxy Settings Outside of the 
URI</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Java DSL</p></th><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Spring DSL</p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ 
context.getProperties().put(&quot;http.proxyHost&quot;, 
&quot;172.168.18.9&quot;);
  context.getProperties().put(&quot;http.proxyPort&quot; &quot;8080&quot;);
 ]]></script>
@@ -159,15 +159,15 @@ HttpServletRequest response = exchange.g
       &lt;/properties&gt;
    &lt;/camelContext&gt;
 ]]></script>
-</div></div></td></tr></tbody></table></div><p>Options on Endpoint will 
override options on the context.</p><h3 
id="HTTP-Configuringcharset">Configuring charset</h3><p>If you are using 
<code>POST</code> to send data you can configure the 
<code>charset</code></p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div></td></tr></tbody></table></div><p>Options 
on&#160;<strong><code>Endpoint</code></strong> will override options on the 
context.</p><h3 
id="HTTP-Configuringcharset">Configuring&#160;<code>charset</code></h3><p>If 
you are using <strong><code>POST</code></strong> to send data you can configure 
the <strong><code>charset</code></strong></p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[setProperty(Exchange.CHARSET_NAME, 
&quot;iso-8859-1&quot;);
 ]]></script>
-</div></div><h3 id="HTTP-Samplewithscheduledpoll">Sample with scheduled 
poll</h3><p>The sample polls the Google homepage every 10 seconds and write the 
page to the file <code>message.html</code>:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="HTTP-SamplewithScheduledPoll">Sample with Scheduled 
Poll</h3><p>The sample polls the Google homepage every 10 seconds and write the 
page to the file <strong><code>message.html</code></strong>:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[from(&quot;timer://foo?fixedRate=true&amp;delay=0&amp;period=10000&quot;)
     .to(&quot;http://www.google.com&quot;)
     .setHeader(FileComponent.HEADER_FILE_NAME, 
&quot;message.html&quot;).to(&quot;file:target/google&quot;);
 ]]></script>
-</div></div><h3 id="HTTP-GettingtheResponseCode">Getting the Response 
Code</h3><p>You can get the HTTP response code from the HTTP component by 
getting the value from the Out message header with 
<code>Exchange.HTTP_RESPONSE_CODE</code>.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="HTTP-GettingtheResponseCode">Getting the Response 
Code</h3><p>You can get the HTTP response code from the HTTP component by 
getting the value from the&#160;<strong><code>OUT</code></strong> message 
header with <strong><code>Exchange.HTTP_RESPONSE_CODE</code></strong>:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[   Exchange exchange = 
template.send(&quot;http://www.google.com/search&quot;, new Processor() {
             public void process(Exchange exchange) throws Exception {
                 exchange.getIn().setHeader(Exchange.HTTP_QUERY, 
constant(&quot;hl=en&amp;q=activemq&quot;));
@@ -176,7 +176,7 @@ HttpServletRequest response = exchange.g
    Message out = exchange.getOut();
    int responseCode = out.getHeader(Exchange.HTTP_RESPONSE_CODE, 
Integer.class);
 ]]></script>
-</div></div><h3 
id="HTTP-UsingthrowExceptionOnFailure=falsetogetanyresponseback">Using 
<code>throwExceptionOnFailure=false</code> to get any response back</h3><p>In 
the route below we want to route a message that we <a shape="rect" 
href="content-enricher.html">enrich</a> with data returned from a remote HTTP 
call. As we want any response from the remote server, we set the 
<code>throwExceptionOnFailure</code> option to <code>false</code> so we get any 
response in the <code>AggregationStrategy</code>. As the code is based on a 
unit test that simulates a HTTP status code 404, there is some assertion code 
etc.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div><h3 
id="HTTP-UsingthrowExceptionOnFailure=falsetogetanyresponseback">Using 
<code>throwExceptionOnFailure=false</code> to get any response back</h3><p>In 
the route below we want to route a message that we <a shape="rect" 
href="content-enricher.html">enrich</a> with data returned from a remote HTTP 
call. As we want any response from the remote server, we set the 
<strong><code>throwExceptionOnFailure=false</code></strong> so we get any 
response in the <strong><code>AggregationStrategy</code></strong>. As the code 
is based on a unit test that simulates a HTTP status code 404, there is some 
assertion code etc.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 // We set throwExceptionOnFailure to false to let Camel return any response 
from the remove HTTP server without thrown
 // HttpOperationFailedException in case of failures.
@@ -200,7 +200,7 @@ from(&quot;jetty://http://localhost:8222
             }
         });
 ]]></script>
-</div></div><h3 id="HTTP-DisablingCookies">Disabling Cookies</h3><p>To disable 
cookies you can set the HTTP Client to ignore cookies by adding this URI 
option:<br clear="none"> 
<code>httpClient.cookiePolicy=ignoreCookies</code></p><h3 
id="HTTP-AdvancedUsage">Advanced Usage</h3><p>If you need more control over the 
HTTP producer you should use the <code>HttpComponent</code> where you can set 
various classes to give you custom behavior.</p><h4 
id="HTTP-SettingMaxConnectionsPerHost">Setting MaxConnectionsPerHost</h4><p>The 
<a shape="rect" href="http.html">HTTP</a> Component has a 
<code>org.apache.commons.httpclient.HttpConnectionManager</code> where you can 
configure various global configuration for the given component.<br 
clear="none"> By global, we mean that any endpoint the component creates has 
the same shared <code>HttpConnectionManager</code>. So, if we want to set a 
different value for the max connection per host, we need to define it on the 
HTTP component and <strong>not</strong
 > on the endpoint URI that we usually use. So here comes:</p><p>First, we 
 > define the <code>http</code> component in Spring XML. Yes, we use the same 
 > scheme name, <code>http</code>, because otherwise Camel will auto-discover 
 > and create the component with default settings. What we need is to overrule 
 > this so we can set our options. In the sample below we set the max 
 > connection to 5 instead of the default of 2.</p><div class="code panel pdl" 
 > style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="HTTP-DisablingCookies">Disabling Cookies</h3><p>To disable 
cookies you can set the HTTP Client to ignore cookies by adding this URI 
option:<br clear="none"> 
<strong><code>httpClient.cookiePolicy=ignoreCookies</code></strong></p><h3 
id="HTTP-AdvancedUsage">Advanced Usage</h3><p>If you need more control over the 
HTTP producer you should use the <strong><code>HttpComponent</code></strong> 
where you can set various classes to give you custom behavior.</p><h4 
id="HTTP-SettingMaxConnectionsPerHost">Setting MaxConnectionsPerHost</h4><p>The 
<a shape="rect" href="http.html">HTTP</a> Component has a 
<strong><code>org.apache.commons.httpclient.HttpConnectionManager</code></strong>
 where you can configure various global configuration for the given component. 
By global, we mean that any endpoint the component creates has the same shared 
<strong><code>HttpConnectionManager</code></strong>. So, if we want to set a 
different value for the max connection per host, we need to defi
 ne it on the HTTP component and <em>not</em> on the endpoint URI that we 
usually use. So here comes:</p><p>First, we define the 
<strong><code>http</code></strong> component in Spring XML. Yes, we use the 
same scheme name, <strong><code>http</code></strong>, because otherwise Camel 
will auto-discover and create the component with default settings. What we need 
is to overrule this so we can set our options. In the sample below we set the 
max connection to 5 instead of the default of 2.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 &lt;bean id=&quot;http&quot; 
class=&quot;org.apache.camel.component.http.HttpComponent&quot;&gt;
     &lt;property name=&quot;camelContext&quot; ref=&quot;camel&quot;/&gt;
@@ -226,7 +226,7 @@ from(&quot;jetty://http://localhost:8222
     &lt;/route&gt;
 &lt;/camelContext&gt;
 ]]></script>
-</div></div><h4 id="HTTP-Usingpreemptiveauthentication">Using preemptive 
authentication</h4><p>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: 
<code>httpClient.authenticationPreemptive=true</code></p><h4 
id="HTTP-Acceptingselfsignedcertificatesfromremoteserver">Accepting self signed 
certificates from remote server</h4><p>See this <a shape="rect" 
class="external-link" 
href="http://www.nabble.com/Using-HTTPS-in-camel-http-when-remote-side-has-self-signed-cert-td25916878.html";
 rel="nofollow">link</a> from a mailing list discussion with some code to 
outline how to do this with the Apache Commons HTTP API.</p><h4 
id="HTTP-SettingupSSLforHTTPClient">Setting up SSL for HTTP Client</h4><h5 
id="HTTP-UsingtheJSSEConfigurationUtility">Using the JSSE Configuration 
Utility</h5><p>As of Camel 2.8, 
 the HTTP4 component supports SSL/TLS configuration through the <a shape="rect" 
href="camel-configuration-utilities.html">Camel JSSE Configuration 
Utility</a>.&#160; This utility greatly decreases the amount of component 
specific code you need to write and is configurable at the endpoint and 
component levels.&#160; The following examples demonstrate how to use the 
utility with the HTTP4 component.</p><p>The version of the Apache HTTP client 
used in this component resolves SSL/TLS information from a global "protocol" 
registry.&#160; This component provides an implementation, 
<code>org.apache.camel.component.http.SSLContextParametersSecureProtocolSocketFactory</code>,
 of the HTTP client's protocol socket factory in order to support the use of 
the Camel JSSE Configuration utility.&#160; The following example demonstrates 
how to configure the protocol registry and use the registered protocol 
information in a route.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="cod
 eContent panelContent pdl">
+</div></div><h4 id="HTTP-UsingPre-emptiveAuthentication">Using Pre-emptive 
Authentication</h4><p>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: 
<strong><code>httpClient.authenticationPreemptive=true</code></strong></p><h4 
id="HTTP-AcceptingSelf-signedCertificatesFromRemoteServer">Accepting 
Self-signed Certificates From Remote Server</h4><p>See this <a shape="rect" 
class="external-link" 
href="http://www.nabble.com/Using-HTTPS-in-camel-http-when-remote-side-has-self-signed-cert-td25916878.html";
 rel="nofollow">link</a> from a mailing list discussion with some code to 
outline how to do this with the Apache Commons HTTP API.</p><h4 
id="HTTP-SettingupSSLforHTTPClient">Setting up SSL for HTTP Client</h4><h5 
id="HTTP-UsingtheJSSEConfigurationUtility">Using the JSSE Configuration 
Utility</h5>
 <p>As of Camel 2.8, the HTTP4 component supports SSL/TLS configuration through 
the <a shape="rect" href="camel-configuration-utilities.html">Camel JSSE 
Configuration Utility</a>.&#160; This utility greatly decreases the amount of 
component specific code you need to write and is configurable at the endpoint 
and component levels.&#160; The following examples demonstrate how to use the 
utility with the HTTP4 component.</p><p>The version of the Apache HTTP client 
used in this component resolves SSL/TLS information from a global "protocol" 
registry.&#160; This component provides an implementation, 
<strong><code>org.apache.camel.component.http.SSLContextParametersSecureProtocolSocketFactory</code></strong>,
 of the HTTP client's protocol socket factory in order to support the use of 
the Camel JSSE Configuration utility.&#160; The following example demonstrates 
how to configure the protocol registry and use the registered protocol 
information in a route.</p><div class="code panel pdl" style
 ="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[KeyStoreParameters ksp = new 
KeyStoreParameters();
 ksp.setResource(&quot;/users/home/server/keystore.jks&quot;);
 ksp.setPassword(&quot;keystorePassword&quot;);
@@ -250,25 +250,25 @@ Protocol.registerProtocol(&quot;https&qu
 from(&quot;direct:start&quot;)
         
.to(&quot;https://mail.google.com/mail/&quot;).to(&quot;mock:results&quot;);
 ]]></script>
-</div></div><h5 id="HTTP-ConfiguringApacheHTTPClientDirectly">Configuring 
Apache HTTP Client Directly</h5><p>Basically camel-http component is built on 
the top of Apache HTTP client, and you can implement a custom 
<code>org.apache.camel.component.http.HttpClientConfigurer</code> to do some 
configuration on the http client if you need full control of it.</p><p>However 
if you <em>just</em> want to specify the keystore and truststore you can do 
this with Apache HTTP <code>HttpClientConfigurer</code>, for example:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><h5 id="HTTP-ConfiguringApacheHTTPClientDirectly">Configuring 
Apache HTTP Client 
Directly</h5><p>Basically&#160;<strong><code>camel-http</code></strong> 
component is built on the top of Apache HTTP client, and you can implement a 
custom 
<strong><code>org.apache.camel.component.http.HttpClientConfigurer</code></strong>
 to do some configuration on the HTTP client if you need full control of 
it.</p><p>However if you <em>just</em> want to specify the keystore and 
truststore you can do this with Apache HTTP 
<strong><code>HttpClientConfigurer</code></strong>, for example:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[Protocol authhttps = new 
Protocol(&quot;https&quot;, new AuthSSLProtocolSocketFactory(
   new URL(&quot;file:my.keystore&quot;), &quot;mypassword&quot;,
   new URL(&quot;file:my.truststore&quot;), &quot;mypassword&quot;), 443);
 
 Protocol.registerProtocol(&quot;https&quot;, authhttps);
 ]]></script>
-</div></div><p>And then you need to create a class that implements 
<code>HttpClientConfigurer</code>, 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:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>And then you need to create a class that implements 
<strong><code>HttpClientConfigurer</code></strong>, 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:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[HttpComponent httpComponent = 
getContext().getComponent(&quot;http&quot;, HttpComponent.class);
 httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());
 ]]></script>
-</div></div><p>If you are doing this using the Spring DSL, you can specify 
your <code>HttpClientConfigurer</code> using the URI. For example:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;bean id=&quot;myHttpClientConfigurer&quot;
+</div></div><p>If you are doing this using the Spring DSL, you can specify 
your <strong><code>HttpClientConfigurer</code></strong> using the URI. For 
example:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;bean id=&quot;myHttpClientConfigurer&quot;
  class=&quot;my.https.HttpClientConfigurer&quot;&gt;
 &lt;/bean&gt;
 
 &lt;to 
uri=&quot;https://myhostname.com:443/myURL?httpClientConfigurerRef=myHttpClientConfigurer&quot;/&gt;
 ]]></script>
-</div></div><p>As long as you implement the HttpClientConfigurer and configure 
your keystore and truststore as described above, it will work 
fine.</p><p></p><h3 id="HTTP-SeeAlso">See Also</h3>
+</div></div><p>As long as you implement 
the&#160;<strong><code>HttpClientConfigurer</code></strong> and configure your 
keystore and truststore as described above, it will work fine.</p><p></p><h3 
id="HTTP-SeeAlso">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring 
Camel</a></li><li><a shape="rect" 
href="component.html">Component</a></li><li><a shape="rect" 
href="endpoint.html">Endpoint</a></li><li><a shape="rect" 
href="getting-started.html">Getting Started</a></li></ul><ul 
class="alternate"><li><a shape="rect" 
href="jetty.html">Jetty</a></li></ul></div>
         </td>
         <td valign="top">


Reply via email to