我还在使用Camel,我对以下用例有疑问:
我需要以XML格式从网址获取一些数据,然后将其发送到另一个网址。我不明白的一件事是如何检索Camel发送的数据。如果我使用.to(http://someurl)
发送一些数据,这是通过邮寄还是获得?我需要检索的变量名是什么?
以下是我配置的路线:
from("timer://foo?fixedRate=true&delay=0&period=60000")
.to("http4://someurl")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("xml", exchange.getIn().getBody(String.class));
RestTemplate restTemplate = new RestTemplate();
String responses = restTemplate.postForObject("http://someUrl", map, String.class);
}
});
答案 0 :(得分:3)
请参阅http://camel.apache.org/http4.html
Camel将在外部服务器上存储来自外部服务器的HTTP响应。 IN消息中的所有标头都将被复制到OUT消息,因此在路由期间会保留标头。 此外,Camel还会将HTTP响应标头添加到OUT消息标头中。
使用GET或POST进行呼叫 以下算法用于确定是否应使用GET或POST HTTP方法:
- 标题中提供的使用方法。
- 如果标题中提供了查询字符串,则为GET。
- 如果端点配置了查询字符串,则为GET。
- POST,如果有要发送的数据(正文不为空)。
- 否则就行了。
醇>
POST示例... OUT BODY中的响应
from("direct:start")
.setHeader(Exchange.HTTP_METHOD,
constant(org.apache.camel.component.http4.HttpMethods.POST))
.to("http4://www.google.com")
.to("log:results");