文档(2.x)列出了一个简单的示例,如下所示(顺便说一下POST):
from("direct:start")
.setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
.to("http4://www.google.com")
.to("mock:results");
根据该示例创建自己的简单路线时:
from("timer://test?fixedRate=true&period=1m")
.routeId("test")
.setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.GET))
.to("https4://somewhere/api/things/getthings")
.to("mock:results");
然后似乎忽略了HTTP_METHOD设置,而是执行了POST:
....>>> (test) setHeader[CamelHttpMethod, GET] --> https4://somewhere/api/things/getthings <<< Pattern:InOnly
....Sending to endpoint: https4://somewhere/api/things/getthings is intercepted and detoured to: Pipeline[[Channel[SetHeader(CamelHttpMethod, POST)]
....>>> https4://somewhere/api/things/getthings --> setHeader[CamelHttpMethod, POST]
....Executing http POST method: https://somewhere/api/things/getthings
是因为文档中的“ Message Headers”部分未列出HTTP_METHOD?
哪个表示给出的示例不正确?
但是,“ Which HTTP method will be used”部分清楚地显示:
2. Use method provided in header (Exchange.HTTP_METHOD).
那么我的.setHeader(.... GET)中有错误吗?
-
我可以通过在URI中添加“ httpMethod”来使其工作:
.to("https4://somewhere/api/things/getthings?httpMethod=GET")
这不是我要解决的方法,因为我的URI以XML定义 例如
.to("somewhereGetThings")
可在不同的路由中重复使用,每个路由可能执行不同的HTTP方法...
-
如果我改用码头:
.to("jetty:https://webapi.netcare.co.za/api/MedicalAid/GetMedicalAids")
它将执行GET,而无需我完全设置setHeader()。
-
我在使用骆驼2.24.1