camel route,http4组件,动态url参数

时间:2011-06-29 14:12:12

标签: java apache-camel

我是apache-camel的新手,我只是想了解它能做什么,不能做什么。我想使用http4组件动态提供url参数。例如,如果我有这样的事情:

from("direct:start").to("http4://hostname.com/the/path")
.unmarshal().json(JsonLibrary.Jackson,MyBeanClass.class)
.to("mock:result");

然后我有一个像这样的制作人模板:

ProducerTemplate template = camelContext.createProducerTemplate();
Map<String,String> m = new HashMap<String,String>();
m.put("key1","val1");
m.put("key2", "val2");
template.sendBody("direct:start", m);

我希望有一些方法可以将地图神奇地转换为url参数,以便发送的实际网址是“http://hostname.com/the/path?key1=val1&key2=val2”。

这种事情有可能吗?文档没有提到这样的内容,但我真的没有看到只能调用静态URL的组件是如何非常有用的。感谢您的任何见解。

1 个答案:

答案 0 :(得分:4)

找到答案:

路线可以这样做:

from("direct:start")
.setHeader(Exchange.HTTP_QUERY, simple("key1=${in.headers.key1}&key2=${in.headers.key2}"))
.to("http4://host.com/the/path")

然后制作人模板可以这样做:

Map<String,Object> m = new HashMap<String,Object>();
m.put("key1", "1");
m.put("key2", "2");
template.sendBodyAndHeaders("direct:start", null, m);