我是骆驼的新手,喜欢用Spring DSL来定义路由。现在我发现很困惑,http查询字符串参数被命名为头文件并被处理,而它们不是。这是不是camel的架构错误?
传入的http请求将作为头信息添加到交换中,其名称与查询参数相同。
以下是骆驼文档中的例子
例如,给定一个带有URL的客户端请求。 http:/myservermyserver?orderid=123。交易所将包含一个名为orderid的头,值为123。
你可以为你进行的其他HTTP调用设置查询参数,通过设置 CamelHttpQuery
头的静态常量。Exchange.HTTP_QUERY
是字符串的静态常量 CamelHttpQuery
例如
from("jetty://0.0.0.0:8080/test")
.setHeader(Exchange.HTTP_QUERY, simple("?param1=${header.param1}")
.to("http://external-url/test")
另一种方法是使用toD组件(SendDynamicProcessor),然后在内部使用http4组件调用URL。
使用camel-http4 2.X.X.&从Camel 3.X http4合并到http。
我分享一个你可以通用和控制一些东西的方法。
你可以通过这个路由来调用不同的端点,只需要几个配置值(headers,body,GETPOST,query params等)。
<!-- param will be List or Array of String key=value and make toString to create query of format key1=value1&key2=value2 -->
<route id="httpInvoker">
<from uri="direct:httpInvoker"/>
<setHeader headerName="CamelHttpQuery"><simple>ref:param_bean<simple></setHeader>
<setHeader headerName="CamelHttpUri"><simple>ref:uri_bean<simple></setHeader>
<toD uri="http4:\\some-example.com">
<route>