2017-07-07 10 views
0

がクリアされない:春の統合は、私が持っている状況では、ヘッダ

<int-http:outbound-gateway request-channel="dataHubRawDataUploadChannel" 
     id="raw" url-expression="headers['rawUrl']" http-method="POST" 
     extract-request-payload="true" header-mapper="headerMapper" 
     reply-channel="rawDataUploadResponseChannel" expected-response-type="java.lang.String" 
     error-handler="rawResponseErrorHandler" /> 

    <int-http:outbound-gateway request-channel="canonicalHttpChannel" 
     id="canonical" url-expression="headers['canonicalUrl']" 
     http-method="POST" header-mapper="headerMapper" reply-channel="targetDataUploadChannel" 
     expected-response-type="java.lang.String" rest-template="customRestTemplate"/> 


    <int-http:outbound-gateway request-channel="targetHttpChannel" 
     id="target" url-expression="headers['targetUrl']" 
     http-method="POST" header-mapper="headerMapper" reply-channel="targetUploadResponseProcessor" 
     expected-response-type="java.lang.String" /> 

私は次のような問題に直面して第1及び第2の要求の

ヘッダではありません3番目の要求を送信するとクリアされ、HTTP 400の応答が返されます。

私は、ヘッダーをきれいにしようとしましたが、私が見つけた唯一の解決策は醜いソリューションである、実際のHTTPリクエストを担当するRestTemplateクラスをオーバーライドして、そこにヘッダをクリアすることです。

あなたはSpring Integrationでそれを行うより良い方法がありますか?

答えて

0

には、送信メッセージから伝播したくないヘッダー名の配列を渡すことができます。

例としてthis answerを参照してください。

EDIT

は、Javaの設定を使用している場合、その答えに示すように、単に@Beanように、そのマッパーを定義します。

あなたはXML構成を使用している場合:

<bean id="mapper" class="org.springframework.integration.http.support.DefaultHttpHeaderMapper" 
     factory-method="outboundMapper"> 
    <property name="excludedInboundStandardResponseHeaderNames"> 
     <array> 
      <value>Host</value> 
      <value>User-Agent</value> 
     </array> 
    </property> 
</bean> 
+0

を私の問題は今、私のようなXMLレベルでこれを設定する場合ということです。<! '\t - outboudゲートウェイのヘッダマッパーの設定 - > \t <ビーンID = "headerMapper" スコープ= "プロトタイプ" \t \tクラス= "org.springframework.integration.http.support.DefaultHttpHeaderMapper"> \t \t <プロパティ名= "outboundHeaderNames" 値= "* "/> \t \t <プロパティ名=" userDefinedHeaderPrefix」値= "" /> \t \t <プロパティ名= "excludedOutboundStandardRequestHeaderNames" 値= "[ファイル名]" /> \t ' それは、そのフィールドを除外しませんファイル名は –

+0

です。コメントにコードを入れないでください。それは判読できません。代わりに質問を編集してください。アウトバウンドヘッダー名に '*'を使用しているので、除外をオーバーライドしています。あなたは( 'XMLの工場-method'を使用)、そのサンプルのように、アウトバウンド・アダプタを作成するファクトリメソッドを使用する必要があります。 –

+0

申し訳ありませんが、スタックオーバーフローの最初の投稿です!アドバイスをいただきありがとうございます。似たようなケースのコードサンプルがありますか?私は春の統合と新しいです。 –

関連する問題