Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第71章 HTTP4
HTTP4 コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.3 の時点で利用可能
http4: コンポーネントは、(HTTP を使用して外部サーバーを呼び出すクライアントとして)外部 HTTP リソースを呼び出す HTTP ベースの エンドポイント を提供します。
Maven ユーザーは、このコンポーネントの
pom.xml
に以下の依存関係を追加する必要があります。
camel-http4 vs camel-http
camel-http4 は Apache HttpClient 4.x を使用し、camel-http は Apache HttpClient 3.x を使用します。
Camel on EAP デプロイメント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Red Hat JBoss Enterprise Application Platform (JBoss EAP) コンテナー上で簡素化されたデプロイメントモデルを提供する Camel on EAP (Wildfly Camel) フレームワークによってサポートされます。このモデルの詳細は、Deploying into a Web Server の Apache Camel on JBoss EAP の章を参照してください。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
http4:hostname[:port][/resourceUri][?options]
http4:hostname[:port][/resourceUri][?options]
デフォルトでは、HTTP にポート 80 を使用し、HTTPS には 443 を使用します。
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
camel-http4 vs camel-jetty
生成できるのは、HTTP4 コンポーネントによって生成されたエンドポイントのみです。そのため、Camel ルートへの入力としては使用しないでください。HTTP エンドポイントを Camel ルートへの入力として、HTTP サーバー経由でバインド/公開するには、Jetty コンポーネント を使用してください。
HttpComponent オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
maxTotalConnections
|
200
|
接続の最大数。 |
connectionsPerRoute
|
20
|
ルートごとの最大接続数。 |
cookieStore
|
null
|
Camel 2.11.2/2.12.0: カスタムの org.apache.http.client.CookieStore を使用するには、以下を行います。デフォルトでは、org.apache.http.impl.client.BasicCookieStore が使用されます。これはインメモリーのみの Cookie ストアです。bridgeEndpoint=true の場合、クッキーストアは単にブリッジ(プロキシーとして機能するなど)であるため、Cookie ストアを noop クッキーストアとして強制的に保存しないでください。
|
httpClientConfigurer
|
null
|
レジストリーの org.apache.camel.component.http.HttpClientConfigurer への参照。
|
clientConnectionManager
|
null
|
カスタムの org.apache.http.conn.ClientConnectionManager を使用するには、以下を行います。
|
httpBinding
|
null
|
カスタムの org.apache.camel.component.http.HttpBinding を使用するには、以下を行います。
|
httpContext
|
null
|
Camel 2.9.2: リクエストの実行時にカスタムの org.apache.http.protocol.HttpContext を使用します。
|
sslContextParameters
|
null
|
Camel 2.8: カスタムの org.apache.camel.util.jsse.SSLContextParameters を使用するには、以下を行います。Security Guide の Configuring Transport Security for Camel Components の章を参照してください。 「JSSE 設定ユーティリティーの使用」
|
x509HostnameVerifier
|
BrowserCompatHostnameVerifier
|
Camel 2.7: org.apache.http.conn.ssl.X509HostnameVerifier インスタンスを別の org.apache.http.conn.ssl.StrictHostnameVerifier または org.apache.http.conn.ssl.AllowAllHostnameVerifier 等のレジストリーで参照できます。
|
connectionTimeToLive
|
-1
|
Camel 2.11.0: 接続の有効期間。時間単位はミリ秒で、デフォルト値は常に存続します。 |
allowJavaSerializedObject
|
false
|
Camel 2.16.1/2.15.5: リクエストが
context-type=application/x-java-serialized-object を使用している場合に Java のシリアル化を許可するかどうか。このオプションはデフォルトでオフになっています。警告: このオプションを有効にすると、Java はリクエストから Java に受信データをデシリアライズし、セキュリティーリスクとなる可能性があることに注意してください。
|
HTTPEndpoint オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
throwExceptionOnFailure
|
true
|
リモートサーバーからの応答が失敗した場合に HttpOperationFailedException を出力することを無効にするオプション。これにより、HTTP ステータスコードに関係なくすべての応答を取得できます。
|
bridgeEndpoint
|
false
|
true の場合、HttpProducer は Exchange.HTTP_URI ヘッダーを無視し、リクエストにエンドポイントの URI を使用します。また、throwExcpetionOnFailure を false に設定して、HttpProducer がすべての障害応答を返信するようにすることもできます。また、true HttpProducer に設定すると、content-encoding が gzip の場合、CamelServlet は gzip 処理をスキップします。 |
clearExpiredCookies
|
true
|
Camel 2.11.2/2.12.0: HTTP リクエストを送信する前に期限切れのクッキーを消去するかどうか。これにより、クッキーストアは、有効期限が切れたときに削除される新しいクッキーを追加して拡張し続けません。 |
cookieStore
|
null
|
Camel 2.11.2/2.12.0: カスタムの org.apache.http.client.CookieStore を使用するには、以下を行います。デフォルトでは、org.apache.http.impl.client.BasicCookieStore が使用されます。これはインメモリーのみの Cookie ストアです。bridgeEndpoint=true の場合、クッキーストアは単にブリッジ(プロキシーとして機能するなど)であるため、Cookie ストアを noop クッキーストアとして強制的に保存しないでください。
|
disableStreamCache
|
false
|
DefaultHttpBinding は、要求入力ストリームをストリームキャッシュにコピーし、このオプションが複数の読み取りをサポートする場合はメッセージボディーに配置します。それ以外の場合は、DefaultHttpBinding は要求入力ストリームをメッセージボディーに直接設定します。Camel 2.17: このオプションは、デフォルトでストリームキャッシングの代わりに応答ストリームを直接使用できるようにするため、プロデューサーによってもサポートされるようになりました。 |
headerFilterStrategy
|
null
|
Camel 2.10.4: レジストリーの org.apache.camel.spi.HeaderFilterStrategy のインスタンスへの参照。t は、新しい create HttpEndpoint にカスタム headerFilterStrategy を適用するために使用されます。
|
httpBindingRef
|
null
|
非推奨および は Camel 3.0: Registry の org.apache.camel.component.http.HttpBinding への参照で削除され ます。代わりに httpBinding オプションを使用してください。
|
httpBinding
|
null
|
カスタムの org.apache.camel.component.http.HttpBinding を使用するには、以下を行います。
|
httpClientConfigurer
|
null
|
レジストリーの org.apache.camel.component.http.HttpClientConfigurer への参照。
|
httpContext
|
null
|
Camel 2.9.2: リクエストの実行時にカスタムの org.apache.http.protocol.HttpContext を使用します。
|
httpClient.XXX
|
null
|
BasicHttpParams でオプションの設定たとえば、
httpClient.soTimeout=5000 は SO_TIMEOUT を 5 秒に設定します。以下のパラメーター bean のセッターメソッドを確認します。AuthParamBean、ClientParamBean、ConnConnectionParamBean、ConnRouteParamBean、CookieSpecParamBean、HttpConnectionParamBean、HttpConnectionParamBean、および HttpProtocolParamBean
Camel 2.13.0:
httpClient は HttpClientBuilder および RequestConfig.Builder の設定に変更されているため 、完全な参考として API ドキュメントを確認してください。たとえば、httpClient.socketTimeout=5000 を使用して、ソケットのタイムアウトを 5 秒に設定します。
|
clientConnectionManager
|
null
|
カスタムの org.apache.http.conn.ClientConnectionManager を使用するには、以下を行います。
|
transferException
|
false
|
有効化され、エクスチェンジ がコンシューマー側で処理に失敗した場合、発生した 例外 が application/x-java-serialized-object コンテンツタイプとして応答でシリアライズされた場合は( Jetty または SERVLET Camel コンポーネントを使用)。プロデューサー側では、例外がデシリアライズされ、HttpOperationFailedException ではなくそのまま出力されます。原因となった例外はシリアライズする必要があります。
|
sslContextParameters
|
null
|
Camel 2.11.1: レジストリーの org.apache.camel.util.jsse.SSLContextParameters への参照。重要: HttpComponent ごとに、org.apache.camel.util.jsse.SSLContextParameters の 1 つのインスタンスのみがサポートされます。2 つ以上の異なるインスタンスを使用する必要がある場合は、インスタンスごとに新しい HttpComponent を定義する必要があります。詳細につていは以下をご覧くださいSecurity Guide および 「JSSE 設定ユーティリティーの使用」 の Configuring Transport Security for Camel Components も参照して ください。
|
x509HostnameVerifier
|
BrowserCompatHostnameVerifier
|
Camel 2.7: org.apache.http.conn.ssl.X509HostnameVerifier インスタンスを別の org.apache.http.conn.ssl.StrictHostnameVerifier または org.apache.http.conn.ssl.AllowAllHostnameVerifier 等のレジストリーで参照できます。
|
maxTotalConnections
|
null
|
Camel 2.14: コネクションマネージャーが持つ合計接続数。このオプションが設定されていない場合、Camel は代わりにコンポーネントの 設定を使用します。
|
connectionsPerRoute
|
null
|
Camel 2.14: ルートごとの最大接続数。このオプションが設定されていない場合、Camel は代わりにコンポーネントの 設定を使用します。
|
authenticationPreemptive
|
false
|
Camel 2.11.3/2.12.2: このオプションが true の場合、camel-http4 はプリエンプティブな Basic 認証をサーバーに送信します。
|
eagerCheckContentAvailable
|
false
|
Camel 2.15.3/2.16: コンシューマーのみ。Content-Length ヘッダーが 0 の場合、HTTP リクエストにコンテンツがあるかどうかを即時にチェックするかどうか。HTTP クライアントがストリームデータを送信しない場合に、この機能を有効にできます。 |
copyHeaders
|
true
|
Camel 2.16: true の場合、コピーストラテジーに従って OUT エクスチェンジヘッダーにコピーされます。false の場合、HTTP 応答からのヘッダーのみが含まれます(IN ヘッダーはコピーされません)。
|
okStatusCodeRange
|
200-299
|
Camel 2.16: 正常な応答と見なされるステータスコード。値は含まれます。範囲は、構文 from-to を使用して定義する必要があります。
|
ignoreResponseBody
|
false
|
Camel 2.16: true の場合、http プロデューサーは応答ボディーを読み取りせず、入力ストリームをキャッシュします。
|
以下の認証オプションを HttpEndpoint に設定できます。
基本認証およびプロキシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Before Camel 2.8.0
名前 | デフォルト値 | 説明 |
---|---|---|
username
|
null
|
認証用のユーザー名。 |
password
|
null
|
認証のパスワード。 |
domain
|
null
|
認証用のドメイン名。 |
host
|
null
|
ホスト名の認証。 |
proxyHost
|
null
|
プロキシーのホスト名 |
proxyPort
|
null
|
プロキシーポート番号 |
proxyUsername
|
null
|
プロキシー認証用のユーザー名 |
proxyPassword
|
null
|
プロキシー認証のパスワード |
proxyDomain
|
null
|
プロキシードメイン名 |
proxyNtHost
|
null
|
プロキシー Nt ホスト名 |
名前 | デフォルト値 | 説明 |
authUsername
|
null
|
認証用のユーザー名 |
authPassword
|
null
|
認証のパスワード |
authDomain
|
null
|
認証のドメイン名 |
authHost
|
null
|
ホスト名の認証 |
proxyAuthHost
|
null
|
プロキシーのホスト名 |
proxyAuthPort
|
null
|
プロキシーポート番号 |
proxyAuthScheme
|
null
|
プロキシースキーム は、設定されていない場合は、エンドポイントからスキームをフォールバックし、使用します。 |
proxyAuthUsername
|
null
|
プロキシー認証用のユーザー名 |
proxyAuthPassword
|
null
|
プロキシー認証のパスワード |
proxyAuthDomain
|
null
|
プロキシードメイン名 |
proxyAuthNtHost
|
null
|
プロキシー Nt ホスト名 |
メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 説明 |
---|---|---|
Exchange.HTTP_URI
|
文字列
|
呼び出す URI。エンドポイントに設定された既存の URI を直接上書きします。この URI は、呼び出す HTTP サーバーの URI です。セキュリティーなどのエンドポイントオプションを設定できる Camel エンドポイント URI とは異なります。このヘッダーは、HTTP サーバーの UTI のみをサポートしません。 |
Exchange.HTTP_PATH
|
文字列
|
リクエスト URI のパス。ヘッダーは HTTP_URI でリクエスト URI を構築するために使用されます。 |
Exchange.HTTP_QUERY
|
文字列
|
URI パラメーター。エンドポイントで直接設定された既存の URI パラメーターを上書きします。 |
Exchange.HTTP_RESPONSE_CODE
|
int
|
外部サーバーからの HTTP 応答コード。OK の場合は 200 です。 |
Exchange.HTTP_RESPONSE_TEXT
|
文字列
|
外部サーバーからの HTTP 応答テキスト。 |
Exchange.HTTP_CHARACTER_ENCODING
|
文字列
|
文字エンコーディング。 |
Exchange.CONTENT_TYPE
|
文字列
|
HTTP コンテンツタイプ。は IN メッセージと OUT メッセージの両方で設定され、text/html などのコンテンツタイプを提供します。
|
Exchange.CONTENT_ENCODING
|
文字列
|
HTTP コンテンツエンコーディング。は IN メッセージと OUT メッセージの両方で設定され、gzip などのコンテンツエンコーディングを提供します。
|
メッセージボディー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel は外部サーバーからの HTTP 応答を OUT ボディーに保存します。IN メッセージからのヘッダーはすべて OUT メッセージにコピーされ、ルーティング中にヘッダーが保持されます。さらに、Camel は HTTP 応答ヘッダーと OUT メッセージヘッダーを追加します。
レスポンスコード リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel は HTTP 応答コードに従って処理されます。
- レスポンスコードは 100..299 の範囲にあり、Camel は応答の成功と見なします。
- 応答コードは 300..399 の範囲にあり、Camel はこれをリダイレクト応答とみなし、その情報とともに
HttpOperationFailedException
を出力します。 - 応答コードは 400+ で、Camel はこれを外部サーバーの障害と見なし、この情報とともに
HttpOperationFailedException
を出力します。throwExceptionOnFailureオプションthrowExceptionOnFailure
をfalse
に設定すると、失敗したレスポンスコードに対してHttpOperationFailedException
が出力されないようにすることができます。これにより、リモートサーバーから応答を取得できるようになります。デモには、以下の例があります。
HttpOperationFailedException リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この例外には、以下の情報が含まれます。
- HTTP ステータスコード
- HTTP ステータス行 (ステータスコードのテキスト)
- サーバーがリダイレクトを返した場合は、場所をリダイレクトします
- 応答ボディー(
java.lang.String
) (サーバーがボディーを応答として提供)
GET または POST を使用した呼び出し リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のアルゴリズムは、
GET
または POST
HTTP メソッドを使用する必要があるかどうかを判断するために使用されます:1。ヘッダーで提供されるメソッドを使用します。2.クエリー文字列がヘッダーで提供される場合は GET
。3.エンドポイントがクエリー文字列で設定されている場合の GET
。4.送信するデータがある場合は POST
します(null ではありません)。5.それ以外の場合は GET
。
HttpServletRequest および HttpServletResponse にアクセスする方法 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
注記 を使用すると、Camel 型コンバーターシステムを使用してこれら 2 つにアクセスできます。camel-jetty または camel-cxf エンドポイントの後には、プロセッサーからリクエストおよび応答を取得できます。
HttpServletRequest request = exchange.getIn().getBody(HttpServletRequest.class); HttpServletRequest response = exchange.getIn().getBody(HttpServletResponse.class);
HttpServletRequest request = exchange.getIn().getBody(HttpServletRequest.class);
HttpServletRequest response = exchange.getIn().getBody(HttpServletResponse.class);
呼び出す URI の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
HTTP プロデューサーの URI を直接エンドポイント URI として設定できます。以下のルートでは、Camel は HTTP を使用して外部サーバー
oldhost
に呼び出します。
from("direct:start") .to("http4://oldhost");
from("direct:start")
.to("http4://oldhost");
同等の Spring の例:
メッセージのキー
Exchange.HTTP_URI
でヘッダーを追加することで、HTTP エンドポイント URI を上書きできます。
from("direct:start") .setHeader(Exchange.HTTP_URI, constant("http://newhost")) .to("http4://oldhost");
from("direct:start")
.setHeader(Exchange.HTTP_URI, constant("http://newhost"))
.to("http4://oldhost");
上記のサンプルでは、エンドポイントが http4://oldhost で設定されていても、http://newhost を呼び出します。http4 エンドポイントがブリッジモードで動作している場合、
Exchange.HTTP_URI
のメッセージヘッダーを無視します。
URI パラメーターの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
http プロデューサーは、HTTP サーバーに送信される URI パラメーターをサポートします。URI パラメーターは、エンドポイント URI で直接設定することも、メッセージ上でキー
Exchange.HTTP_QUERY
を持つヘッダーとして設定できます。
from("direct:start") .to("http4://oldhost?order=123&detail=short");
from("direct:start")
.to("http4://oldhost?order=123&detail=short");
または、ヘッダーで提供されるオプション:
from("direct:start") .setHeader(Exchange.HTTP_QUERY, constant("order=123&detail=short")) .to("http4://oldhost");
from("direct:start")
.setHeader(Exchange.HTTP_QUERY, constant("order=123&detail=short"))
.to("http4://oldhost");
http メソッド(GET/POST/PUT/DELETE/HEAD/OPTIONS/TRACE)を HTTP プロデューサーに設定する方法 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
HTTP4 コンポーネントは、メッセージヘッダーを設定して HTTP リクエストメソッドを設定する方法を提供します。以下に例を示します。
from("direct:start") .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST)) .to("http4://www.google.com") .to("mock:results");
from("direct:start")
.setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
.to("http4://www.google.com")
.to("mock:results");
メソッドは、文字列定数を使用して少し短くすることができます。
.setHeader("CamelHttpMethod", constant("POST"))
.setHeader("CamelHttpMethod", constant("POST"))
同等の Spring の例:
クライアントタイムアウトの使用 - SO_TIMEOUT リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
HttpSOTimeoutTest ユニットテストを参照してください。
プロキシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
HTTP4 コンポーネントは、プロキシーを設定する方法を提供します。
from("direct:start") .to("http4://oldhost?proxyAuthHost=www.myproxy.com&proxyAuthPort=80");
from("direct:start")
.to("http4://oldhost?proxyAuthHost=www.myproxy.com&proxyAuthPort=80");
proxyAuthUsername
および proxyAuthPassword
オプションを使用したプロキシー認証にも対応しています。
URI の外部でプロキシー設定の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
システムプロパティーの競合を回避するには、CamelContext または URI からのみプロキシー設定を設定できます。Java DSL:
context.getProperties().put("http.proxyHost", "172.168.18.9"); context.getProperties().put("http.proxyPort" "8080");
context.getProperties().put("http.proxyHost", "172.168.18.9");
context.getProperties().put("http.proxyPort" "8080");
Spring XML
Camel は最初に Java System または CamelContext プロパティーから設定を設定し、指定した場合はエンドポイントプロキシーオプションを設定します。そのため、エンドポイントオプションでシステムプロパティーを上書きできます。
Camel 2.8 には、使用するスキームを明示的に設定できる
http.proxyScheme
プロパティーもあります。
charset の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
POST
を使用してデータを送信する場合は、Exchange
プロパティーを使用して charset
を設定できます。
exchange.setProperty(Exchange.CHARSET_NAME, "ISO-8859-1");
exchange.setProperty(Exchange.CHARSET_NAME, "ISO-8859-1");
スケジュールされたポーリングを使用したサンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この例では、Google ホームページを 10 秒ごとにポーリングし、そのページをファイル
message.html
に書き込みます。
from("timer://foo?fixedRate=true&delay=0&period=10000") .to("http4://www.google.com") .setHeader(FileComponent.HEADER_FILE_NAME, "message.html") .to("file:target/google");
from("timer://foo?fixedRate=true&delay=0&period=10000")
.to("http4://www.google.com")
.setHeader(FileComponent.HEADER_FILE_NAME, "message.html")
.to("file:target/google");
エンドポイント URI からの URI パラメーター リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この例では、完全な URI エンドポイントがあり、これは Web ブラウザーに入力した内容になります。当然ながら、複数の URI パラメーターは、Web ブラウザーと同じように
&
amp; 文字をセパレーターとして使用して設定できます。この場合、Camel は複雑ではありません。
// we query for Camel at the Google page template.sendBody("http4://www.google.com/search?q=Camel", null);
// we query for Camel at the Google page
template.sendBody("http4://www.google.com/search?q=Camel", null);
メッセージの URI パラメーター リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Map headers = new HashMap(); headers.put(Exchange.HTTP_QUERY, "q=Camel&lr=lang_en"); // we query for Camel and English language at Google template.sendBody("http4://www.google.com/search", null, headers);
Map headers = new HashMap();
headers.put(Exchange.HTTP_QUERY, "q=Camel&lr=lang_en");
// we query for Camel and English language at Google
template.sendBody("http4://www.google.com/search", null, headers);
上記のヘッダー値では、先頭に
?
を付け ず、通常 &
amp; 文字でパラメーターを分離することができることに注意してください。
レスポンスコードの取得 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
HTTP4 コンポーネントから HTTP 応答コードを取得するには、
Exchange.HTTP_RESPONSE_CODE
で Out メッセージヘッダーの値を取得します。
Cookie の無効化 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Cookie を無効にするには、URI オプション
httpClient.cookiePolicy=ignoreCookies
を追加して HTTP Client が Cookie を無視するように設定します。
高度な使用方法 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
HTTP プロデューサーをより詳細に制御する必要がある場合は、
HttpComponent
を使用する必要があります。ここで、さまざまなクラスを設定してカスタム動作を提供できます。
JSSE 設定ユーティリティーの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.8 以降、HTTP4 コンポーネントは Camel JSSE 設定ユーティリティーを介して SSL/TLS 設定をサポートします。このユーティリティーは、作成する必要のあるコンポーネント固有のコードの量を大幅に減らし、エンドポイントおよびコンポーネントレベルで設定可能です。 以下の例は、HTTP4 コンポーネントの設定方法を示しています。Security Guide の Configuring Transport Security for Camel Components も参照してください。
エンドポイントの Spring DSL ベースの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Apache HTTP クライアントを直接設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
基本的に camel-http4 コンポーネントは Apache HttpClient 上に構築されています。詳細は SSL/TLS のカスタマイズ を参照するか、
org.apache.camel.component.http4.HttpsServerTestSupport
unit test ベースクラスを確認してください。また、カスタムの org.apache.camel.component.http4.HttpClientConfigurer
を実装して、完全な制御が必要な場合は、http クライアントでいくつかの設定を行うこともできます。
ただし、キーストアとトラストストアを指定する だけ の場合は、Apache HTTP
HttpClientConfigurer
でこれを行うことができます。以下に例を示します。
次に、
HttpClientConfigurer
を実装するクラスを作成し、上記の例ごとにキーストアまたはトラストストアを提供する https プロトコルを登録する必要があります。次に、Camel ルートビルダークラスから、以下のようにフックできます。
HttpComponent httpComponent = getContext().getComponent("http4", HttpComponent.class); httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());
HttpComponent httpComponent = getContext().getComponent("http4", HttpComponent.class);
httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());
Spring DSL を使用してこれを実行する場合は、URI を使用して
HttpClientConfigurer
を指定できます。以下に例を示します。
上記のように HttpClientConfigurer を実装し、キーストアとトラストストアを設定すると問題なく機能します。
HTTPS を使用した gotchas の認証 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
エンドユーザーは、HTTPS での認証に問題があることを報告していました。この問題は最終的に、カスタム設定済みの
org.apache.http.protocol.HttpContext
を指定して解決されました。
1.HttpContexts の(Spring)ファクトリーを作成します。
2.Spring アプリケーションコンテキストファイルで HttpContext を宣言します。
<bean id="myHttpContext" factory-bean="httpContextFactory" factory-method="getObject"/>
<bean id="myHttpContext" factory-bean="httpContextFactory" factory-method="getObject"/>
3.http4 URL のコンテキストを参照します。
<to uri="https4://myhostname.com:443/myURL?httpContext=myHttpContext"/>
<to uri="https4://myhostname.com:443/myURL?httpContext=myHttpContext"/>
異なる SSLContextParameters の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
HTTP4 コンポーネントは、コンポーネントごとに
org.apache.camel.util.jsse.SSLContextParameters
の 1 つのインスタンスのみをサポートします。2 つ以上の異なるインスタンスを使用する必要がある場合は、以下のように複数の HTTP4 コンポーネントを設定する必要があります。この例は、それぞれ sslContextParameters
プロパティーの独自のインスタンスを使用する 2 つのコンポーネントを示しています。