我是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的组件是如何非常有用的。感谢您的任何见解。
答案 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);