Получение переменной, отправленной верблюдом - PullRequest
0 голосов
/ 09 марта 2012

Я все еще работаю через Camel, и у меня есть вопрос, касающийся следующего варианта использования:

Мне нужно получить некоторые данные из URL-адреса в формате XML и отправить их по другому URL-адресу. Одна вещь, которую я не понимаю, это как получить данные, отправленные 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 Ответ

3 голосов
/ 10 марта 2012

см. http://camel.apache.org/http4.html

Camel будет хранить ответ HTTP от внешнего сервера в теле OUT. Все заголовки из сообщения IN будут скопированы в сообщение OUT, поэтому заголовки будут сохранены во время маршрутизации. Кроме того, Camel также добавит заголовки ответа HTTP к заголовкам сообщения OUT.

Вызов с помощью GET или POST Следующий алгоритм используется для определения необходимости использования метода GET или POST HTTP:

  1. Используйте метод, указанный в заголовке.
  2. GET, если в заголовке указана строка запроса.
  3. GET, если конечная точка настроена со строкой запроса.
  4. POST, если есть данные для отправки (тело не равно нулю).
  5. ПОЛУЧИТЕ иначе.

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...