Modified: websites/production/camel/content/http.html
==============================================================================
--- websites/production/camel/content/http.html (original)
+++ websites/production/camel/content/http.html Fri Jul 17 11:19:53 2015
@@ -127,7 +127,7 @@ from("direct:start")
 <to uri="http://www.google.com"/>
 <to uri="mock:results"/>
 ]]></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.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpBindingRef</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>Deprecated and will be removed in 
Camel 3.0:</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.</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><code>httpClientConfigurerRef</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>Deprecated and will be 
removed in Camel 3.0:</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.</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 
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" cl
 ass="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>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 <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.HeaderFilterStrategy</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></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="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 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>Basic</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 pro
 xy 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" 
rowspan="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><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="external-link" 
href="http://hc.apache.org/httpclient-3.x/authentication.html#NTLM";>limited 
support</a> for what is know
 n 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>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 
<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></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-MessageHe
 aders">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.</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="conf
 luenceTd"><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></t
 d><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>String</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="confluenc
 eTd"><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 
colspan="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="confluenceT
 d"><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>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 thro
 w 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 H
 TTP 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 cla
 ss="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</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.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>httpBindingRef</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>Deprecated and will be removed in 
Camel 3.0:</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.</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><code>httpClientConfigurerRef</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>Deprecated and will be 
removed in Camel 3.0:</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.</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 
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" cl
 ass="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>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 <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.HeaderFilterStrategy</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.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></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="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 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 colsp
 an="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>Basic</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="confluen
 ceTd"><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" rowspan="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><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 yo
 u 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="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. 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 colsp
 an="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>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 
<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></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 
cols
 pan="1" rowspan="1" class="confluenceTd"><p>URI to call. Will override 
existing URI set directly on the endpoint.</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" 
rowspa
 n="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>String</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>Exc
 hange.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 
<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>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, <co
 de>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 que
 ry 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">
 <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>
@@ -204,7 +204,7 @@ from(&quot;jetty://http://localhost:{{po
 &lt;/bean&gt;
 
 ]]></script>
-</div></div><p>And then we can just use it as we normally do in our 
routes:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div>And then we can just use it as we normally do in our routes:<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;camelContext id=&quot;camel&quot; 
xmlns=&quot;http://camel.apache.org/schema/spring&quot; 
trace=&quot;true&quot;&gt;
     &lt;route&gt;


Reply via email to