2012-03-18 30 views
2

私はservicemix 4.4.1を実行しています。私はcamel-http4を使ってウェブサイトへのhttp呼び出しをしようとしています。私は起動しようとするウェブサイトどんなに、私はこのエラーを取得しておいてください。 org.apache.camel.RuntimeCamelException:org.apache.camel.component.http.HttpOperationFailedException:405ステータスコード405のorg.apache.camel.component.http.HttpOperationFailedExceptionの取得

ここ:HTTP操作はstatusCodeを持つhttp://servicemix.apache.org/downloads/servicemix-4.4.0.htmlを呼び出し失敗しました私のコードスニペットです:私は、サイトの数を試してみましたが、別のHTTPメソッド(GET対ポスト)を使用して試してみました

<camelContext xmlns="http://camel.apache.org/schema/spring"> 
    <route> 
    <from uri="activemq://events1"/> 
<setHeader headerName="CamelHttpMethod"> 
    <constant>POST</constant> 
</setHeader> 
    <to uri="http://servicemix.apache.org/downloads/servicemix-4.4.0.html"/> 
    <to uri="log:events"/> 
    </route> 
</camelContext> 

は、と私は同じエラーを取得しておきます。何か案が?前もって感謝します。

答えて

1

指定したウェブサイトはフォームのターゲットにはなりません。したがって、ほとんどの場合、POSTではなくGET要求のみが許可されます。だから、CamelHttpMethodをGETに設定してみてください。

Btw。あなたのルートで何を達成したいですか? WebサイトにactiveMQメッセージを送信する場合はPOSTはOKですが、POSTを受け入れるWebサイトを使用する必要があります。

リクエストを受け取るための独自のルートを定義することで、これを達成できます。

次に、最初のルートでそのURLに送信できます。

+0

ありがとうございました。奇妙なことはCamelHttpMethodを定義しないと思っていたことです.HTTPメソッドはGETとみなされます。 POSTの代わりに明示的にGETメソッドを設定しようとしましたが、うまくいきました。再度、あなたの助けに感謝します。 – emmitt1219

+0

Camelは、URLを見てどのhttpメソッドを使用するかを推測します。したがって、デフォルトでgetを使用するとは限りません。 http://camel.apache.org/http.htmlの「GETまたはPOSTを使用した呼び出し」の節を参照してください。アルゴリズムが記述されています。 –

1

これを確認しました。 設定オプション 'bridgeEndpoint'によって問題が解決されました。 httpエンドポイントをbridgeEndpointに設定しています。これは、要求URLが要求URIで更新されることを意味します。

<route> 
    <from uri="-------"/> 
    <to uri="jetty://http://localhost:9090/my.html?bridgeEndpoint=true"/ 
    <to uri="log:events"/> 
</route> 
+0

これはまさに私の問題でした。この回答に感謝します(+1)。 – Luixv

関連する問題