使用HTTP操作失败异常(org.apache.camel.component.http.HttpOperationFailedException)并带有状态码405。

7
我正在运行servicemix 4.4.1。我正尝试使用camel-http4对网站进行http请求。但无论我尝试调用哪个网站,我都会收到以下错误信息: org.apache.camel.RuntimeCamelException: org.apache.camel.component.http.HttpOperationFailedException: HTTP操作调用http://servicemix.apache.org/downloads/servicemix-4.4.0.html失败,状态码为:405

以下是我的代码片段:
 <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>

我尝试了多个网站,并尝试使用不同的http方法(post vs get),但仍然收到相同的错误信息。有什么解决办法吗?先谢谢了。

2个回答

2
您指定的网站没有表单目标。因此,它很可能只允许GET请求而不是POST。所以尝试将CamelHttpMethod设置为GET。
顺便问一下,您想通过路由实现什么目的?如果您想将activeMQ消息发送到网站,则使用POST是可以的,但您必须使用接受POST的网站。
您可以通过定义自己的路由来实现这一点,然后您可以在第一个路由中发送到该URL。

谢谢你的帮助。奇怪的是,我认为如果不定义CamelHttpMethod,HTTP方法会被假定为GET。我尝试将方法显式设置为GET而不是POST,似乎这样可以解决问题。再次感谢你在这方面的帮助。 - emmitt1219
2
Camel通过查看URL来猜测使用哪种HTTP方法,因此它并不总是默认使用GET。请参见http://camel.apache.org/http.html中的“使用GET或POST进行调用”部分,其中描述了该算法。 - Christian Schneider

2

我检查了这个问题; 通过设置选项 'bridgeEndpoint'解决了问题; 您设置了http端点为bridgeEndpoint,这意味着请求url将会被更新为请求URI。

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

这正是我的问题。感谢您的回答(+1)。 - Luixv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接