0
  • サービスAはファイルを受け取ります
  • サービスAはビジネスロジックを実行します。
  • サービスBはHTTPインバウンドを公開してファイルを受信し、 をS3に送信します。
  • サービスhttp発信ゲートウェイを使用している発信サービスB。

サービスAがhttp発信ゲートウェイを使用してサービスBを呼び出すときに、適切なメッセージコンバータを見つけることができません。Spring Integration | | HTTPアウトバウンドゲートウェイ|マルチパート

<int:header-enricher input-channel="addHeader" output-channel="s3publishWithHeader">` 


<int:header name="Content-Type" value="multipart/form-data" overwrite="true"/> </int:header-enricher>` 

<util:list id="converters"> 
    <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> 
    <bean class="org.springframework.http.converter.FormHttpMessageConverter"/> 
</util:list>` 



<http:outbound-gateway request-channel="s3publishWithHeader" 
         http-method="POST" url="http://localhost:8090/com/api/upload" 
          extract-request-payload="true" message-converters="converters" 
    ></http:outbound-gateway> 

春の統合のバージョン:4.3.12

答えて

0

あなたはそのContent-Typeヘッダーを指定する必要はありませんし、カスタム・コンバータを構成する必要はありません。

必要なものだけをMap<String, Object>として​​次のとおりです。

else if (content instanceof Map) { 
     // We need to check separately for MULTIPART as well as URLENCODED simply because 
     // MultiValueMap<Object, Object> is actually valid content for serialization 
     if (this.isFormData((Map<Object, ?>) content)) { 
      if (this.isMultipart((Map<String, ?>) content)) { 
       contentType = MediaType.MULTIPART_FORM_DATA; 
      } 
      else { 
       contentType = MediaType.APPLICATION_FORM_URLENCODED; 
      } 
     } 
} 

私は、応答解析で何かがあると思うので、それにもかかわらず、あなたがエラーのスタックトレース示さなければなりません。

+0

こんにちは@ArtemBilan コードを更新し、Content-Typeの参照を削除しました。コードとスタックトレースはgist.github.com/vssprakash/1629d7fcee4143f227f4bacc262fa6b2 – prakash

+0

で利用可能です。私はあなたのファイルを 'byte []'または 'org.springframework.core.io.Resource'として送るように表現することをお勧めします。さもなければ、 'AbstractMackson2HttpMessageConverter'の' MultiMap'中の値の非適合型のためのフォールバックがあります。 –

関連する問題