これを避ける直接的な方法はありません。ヘッダーをハードコードされた値に設定する場合は、ヘッダーをエンドポイントのURIプロパティーに移動できる可能性があります。そうでなければ、あなたは本当に2つの他の選択肢しか持たない。最初のオプションは、HTTPコールの後にremoveヘッダー呼び出しを使用してすべてのヘッダーを削除し、下流に行かないようにすることです。 2番目の方法は、すべてのヘッダーをhttp呼び出しと同じルートに設定し、エンリッチステートメントでエンドポイントと異なるルート呼び出しを行い、集約して戻った交換をカスタマイズできるメインルートに戻すことです。ここで
許可ヘッダのすべてのためのラクダのhttpリファレンスページでは、ルート削除ヘッダのURI http://camel.apache.org/http4.html
サンプル
from("direct:start")
.setHeader("variable1", constant("value1"))
.setHeader("variable2", constant("value2"))
.setHeader("Content-Type", constant("application/json"))
.setHeader("Accept", constant("application/json"))
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.to("http://<host>:<port>/contact/3")
.unmarshal().json(JsonLibrary.Jackson)
.removeHeaders("variable*")
.to("Anything I call now won't have the variable headers");
濃縮コール
にそれを置くことができるかどうかを確認することです
AggregationStrategy aggregationStrategy = new ExampleAggregationStrategy();
from("direct:start")
.enrich("direct:getContact", aggregationStrategy)
.to("You can have no additional headers here");
public class ExampleAggregationStrategy implements AggregationStrategy {
public Exchange aggregate(Exchange original, Exchange resource) {
Object originalBody = original.getIn().getBody();
Object resourceResponse = resource.getIn().getBody();
Object mergeResult = //TODO implement this however you want. You can remove any headers here you like
if (original.getPattern().isOutCapable()) {
original.getOut().setBody(mergeResult);
} else {
original.getIn().setBody(mergeResult);
}
return original;
}
}
実際にはもう1つのオプションが、ラクダ書類を通過するときに私は興味深い財産を見つけました。免責事項私は今でも私がラクダ2.15気圧で走っているので、私はこの財産を自分で試したことはありませんが、あなたが必要とするものであれば速やかにテストすることができます。
copyHeaders
デフォルト:真
キャメル2.16:このオプションは為替ヘッダに続いtrueの場合は、コピー戦略に従ってOUT交換ヘッダにコピーされます。これをfalseに設定すると、HTTP応答(INヘッダーを伝播しない)からのヘッダーのみを含めることができます。