2015-09-30 10 views
0

это мой маршрут:Как вызвать простой веб-сервис с верблюдом?

<route> 
<from uri="timer:timerName?period=2000"/> 
<to uri="ahc:http://www.google.com/search?q=Camel"/> 
<log message="${property.CamelHttpResponseCode}"/> 
</route> 

я хочу, чтобы получить статус кода ответа, но я получил эту ошибку

Exchange[Message: [Body is null]] 

Как я могу исправить эту проблему?

ответ

0

Я думаю, читая «Получить код ответа» пункт в documentation помогло бы:

Exchange exchange = template.send("ahc:http://www.google.com/search", new Processor() { 
     public void process(Exchange exchange) throws Exception { 
      exchange.getIn().setHeader(Exchange.HTTP_QUERY, constant("hl=en&q=activemq")); 
    } 
}); 
Message out = exchange.getOut(); 
int responseCode = out.getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class); 
+0

Благодарим за ответ! но я хочу сделать это внутри маршрута в blueprint.xml не с POJO – zied123456

+0

AHC означает Async Http Client. Вы не можете получить результат на своем маршруте сразу после вызова ahc. Или вам нужно отключить асинхронный режим. – Thomas

0

Для этого простого случая вы можете использовать верблюд-причал. В противном случае существуют дополнительные компоненты, такие как Camel-Restlet для вызова и предоставления услуг HTTP. http://camel.apache.org/jetty.html

<route> 
    <from uri="direct:start"/> 
    <to uri="http://www.google.com/search?q=Camel"/> 
<route> 

Edit:

Только для целей тестирования, вы можете сделать так:

<route> 
    <from uri="jetty://localhost:5050/test"/> 
    <to uri="jetty://http://www.google.com?q=Camel"/> 
<route> 

Затем используйте инструмент, как почтальон в хроме или стельке и Вызов службы LOCALHOST.

+0

Я сделал это, но с прямым компонентом маршрут не запускался: я не могу прочитать результат, я получил это сообщение: Apache Camel 2.15.1.redhat-620133 (CamelContext: camel-1) начался через 0.359 секунд больше ничего – zied123456

+0

Я редактировал мой ответ.. –

 Смежные вопросы

  • Нет связанных вопросов^_^