2017-10-30 10 views
1

マイSpring統合の設定ファイル持つは<INT-のhttp:アウトバウンド・ゲートウェイ>は、メッセージのコンバータを使用する方法


<int-http:outbound-gateway request-channel="loadToFtpChannel" 
      url="http://localhost:8107/ftpService/processFTP" 
      http-method="POST" message-converters="ftpMessgaeConverter" 
      expected-response-type="java.lang.String"> 
    </int-http:outbound-gateway> 
    <bean id="ftpMessgaeConverter" class="com.ftp.FTPMessgaeConverter" ></bean> 
FTPMessageConverterクラス

public class FTPMessgaeConverter implements HttpMessageConverter<JSONObject> { 

    private static final List<MediaType> MEDIA_TYPES = new ArrayList<MediaType>(); 

    static { 
     MEDIA_TYPES.add(MediaType.parseMediaType("application/json")); 
    } 


    @Override 
    public boolean canRead(Class<?> clazz, MediaType mediaType) { 
     // TODO Auto-generated method stub 
     return String.class.equals(clazz); 
    } 

    @Override 
    public boolean canWrite(Class<?> clazz, MediaType mediaType) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public List<MediaType> getSupportedMediaTypes() { 
     // TODO Auto-generated method stub 
     return MEDIA_TYPES; 
    } 
    @Override 
    public JSONObject read(Class<? extends JSONObject> clazz, HttpInputMessage inputMessage) 
      throws IOException, HttpMessageNotReadableException { 
     JSONObject body = null; 
     try { 
      body = new JSONObject(inputMessage.getBody().toString()); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return body; 
    } 

    @Override 
    public void write(JSONObject t, MediaType contentType, HttpOutputMessage outputMessage) 
      throws IOException, HttpMessageNotWritableException { 

     System.out.println("outputMessage " + outputMessage.getBody()); 
     System.out.println("JSONObject " + t); 
     System.out.println("contentType " + contentType); 
    } 

その投げ春の統合の属性エラー

org.springframework.web.client.RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [org.json.JSONObject] and content type [application/json] 

request-channel="loadToFtpChannel"私はJson形式でメッセージを取得しています。このメッセージでは、発信元と宛先を
<int-http:inbound-gateway>に準備しなければなりません。そして、受信ゲートウェイは要求を処理した後、応答を送信ゲートウェイメッセージをmessage-converters="ftpMessgaeConverter"まで読んでください。 誰でもこれを助けることができます。

@Override 
public boolean canWrite(Class<?> clazz, MediaType mediaType) { 
    // TODO Auto-generated method stub 
    return false; 
} 

このHttpMessageConverterがですべての要求を送信するには適していませんと言う:ありがとう

答えて

0

しかし、あなたは間違いなくFTPMessgaeConverterでこのコードを持っています。

達成したいことはわかりませんが、これはコンバータが選択されていない理由です。明示的に使用するので(message-converters="ftpMessgaeConverter")、考慮する必要のあるコンバーターはありません。あなたはカスタムと一緒にMappingJackson2HttpMessageConverterを使用し、message-convertersの場合は<util:list>を使用することもできます。

+0

私はスパムを停止します。あなたはより多くの情報であなたの質問を編集することができます。適切な書式を使用してください。さもなければコメントのここのコードは読めません。あなたを助けるために私の時間を尊重してください。 –

+0

ありがとうございます、変換されて選択され、それは正常に動作します。 – meps

関連する問題