2017-03-15 5 views
1

私は外部ソースからいくつかのファイルをダウンロードするプロセッサを作成します。ラクダの交換体はどのようにタイプされていますか?

私はそれを行うには、次のように:

CamelContext context = exchange.getContext(); 
ProducerTemplate template=context.createProducerTemplate(); 
Object answer=null; 
try { 
    answer=template.requestBodyAndHeaders(
     uri, 
     "", 
     headers); 
} catch (Exception e) { 
    .... 
} finally { 
    template.stop(); 
} 

if (answer != null) { 
    /* Here I need to know, if it is a file, or an error-message */ 
} 

問題があり、要求はエラー・メッセージ(String)をすることができ、またはストリーム(ファイルが発見された)です。

どうすれば確認できますか?

は、任意の助けてくれてありがとう

UPDATE:ルートの

コードは簡単です:多分ちょうどチェック "のinstanceof"

from("http://domain.de/getDoc?Id=123") 
to("file:docs") 
+0

例外が発生した場合のエラー状況を通知しないでください。 – Ralf

+0

はい、例外をスローしたいと思います。しかし、それがエラーメッセージであるかどうかを知る必要があります。それがファイルの場合、私は例外をスローしたくありません。 – Burner

+0

私が言ったことは、プロデューサテンプレートのターゲット側で例外をスローする必要があるということです。あなたが呼び出している場所。エラーメッセージを返す代わりに例外をスローします。次に、あなたの質問で引用したコード部分に 'if(answer.getException()!= null)'をチェックしてエラー処理を行います。 – Ralf

答えて

0

を助けますか?

+0

は毎回org.apache.camel.converter.stream.CachedOutputStreamです – Burner

+0

ストリームを読むとどうなりますか? –

+0

それではできます:String answerStr = context.getTypeConverter()。convertTo(String.class、answer);しかし、私はコンバータクラスを設定する必要があります。 – Burner

関連する問題