2016-09-27 10 views
0

私は、JMSキューから読み込み、サービスにPOSTするためのラクラルートを設定しました。Camelを使用してPOSTリクエストを行う

from("jms:queue") 
.marshal() 
.json(JsonLibrary.GSON) 
.setHeader(Exchange.CONTENT_TYPE,constant("application/json")) 
.setHeader(Exchange.HTTP_METHOD, constant("POST")) 
.process(new Processor1()) 
.to("https4:xxxxxx?throwExceptionOnFailure=false") 
.process(new MyProcessor()) 

マイ設定: 私のルートがある

HttpComponent httpc = getContext().getComponent("http4",HttpComponent.class); 
httpc.setHttpConfiguaration(customHttpConfig()) 

とcustomHttpConfigに私は私の認証の詳細を設定します。

サーバーから400エラーが発生します。しかし、私は郵便配達員apiからサーバーを打つことができ、成功した応答を得ることができます。

私のProcessor1クラス(要求前)では、私のオブジェクトのjson表現を含むメッセージの本文を印刷することができます。

しかし、POSTリクエストの後にプロセッサに、私はこれをやっていると応答の下に取得:私が間違っているの

Message in = exchange.getIn(); 
in.getBody(String.class); // print the error code 400 
HttpServletRequest request = in.getBody(HttpServletRequest.class)// This is null. 

何か?投稿内容の本文にメッセージの内容を設定する必要がありますか?

+0

400は、不正な要求を意味します。つまり、リクエストメッセージまたはURIが間違っていることを意味します。サーバーログに、要求が送信されたことが表示され、正しいかどうかを確認しますか?サーバーが受け取るヘッダーはどうですか? –

+0

サーバーログにアクセスできません。私が述べたように、私はexchange.inから取得する要求オブジェクトはnullです。 –

+0

これはサーバーからの応答です.400の悪い要求を意味するのであれば?最も簡単なのは、おそらく自分自身のローカルサーバーをセットアップし、それを最初にテストすることです。そうすれば、インテグレーションテストを行う前に、どのヘッダを受け取っているのか、どのように見えるのかを正確に確認できます。ここでは、http://tinyserver.sourceforge.net/で再生するシンプルなサーバーです –

答えて

0

それはString.classではありません。

in.getBody(String.class); 

まず交換体を印刷したり、ログインしようと、その後、サーバーの応答の種類を確認してください。

それはHttpServletResponse次のようになります。

HttpServletRequest request = in.getBody(HttpServletRequest.class) 
+0

文字列型にすることができます。これをチェックしてください。 http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html。私は応答をStringに変換して出力することができます。 –

+0

また、2番目の部分については、このstackoverflowの質問は、httprequestオブジェクトを使用する方法を指します.. http://stackoverflow.com/questions/19976812/how-to-dump-http-body-and-headers-sent-with-http-コンポーネント付きapache-camel –

関連する問題