接收Camel发送的变量

时间:2012-03-09 13:04:14

标签: java apache-camel

我还在使用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);
                }
            });

1 个答案:

答案 0 :(得分:3)

请参阅http://camel.apache.org/http4.html

  

Camel将在外部服务器上存储来自外部服务器的HTTP响应。      IN消息中的所有标头都将被复制到OUT消息,因此在路由期间会保留标头。      此外,Camel还会将HTTP响应标头添加到OUT消息标头中。

     

使用GET或POST进行呼叫      以下算法用于确定是否应使用GET或POST HTTP方法:

     
      
  1. 标题中提供的使用方法。
  2.   
  3. 如果标题中提供了查询字符串,则为GET。
  4.   
  5. 如果端点配置了查询字符串,则为GET。
  6.   
  7. POST,如果有要发送的数据(正文不为空)。
  8.   
  9. 否则就行了。
  10.   

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");