私は、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.
何か?投稿内容の本文にメッセージの内容を設定する必要がありますか?
400は、不正な要求を意味します。つまり、リクエストメッセージまたはURIが間違っていることを意味します。サーバーログに、要求が送信されたことが表示され、正しいかどうかを確認しますか?サーバーが受け取るヘッダーはどうですか? –
サーバーログにアクセスできません。私が述べたように、私はexchange.inから取得する要求オブジェクトはnullです。 –
これはサーバーからの応答です.400の悪い要求を意味するのであれば?最も簡単なのは、おそらく自分自身のローカルサーバーをセットアップし、それを最初にテストすることです。そうすれば、インテグレーションテストを行う前に、どのヘッダを受け取っているのか、どのように見えるのかを正確に確認できます。ここでは、http://tinyserver.sourceforge.net/で再生するシンプルなサーバーです –