Скачать с http-сайта, используя Apache Camel - PullRequest
0 голосов
/ 06 июня 2018

Мне нужно загрузить файл из http-местоположения в мою локальную систему, используя apache camel.Когда я дал следующий код

    from("http://url/filename.xml")                         
    .to("file://C:location")  

, он работал для ftp, но не работал, когда URL-адрес был "http".То есть он не загружает файл из http-расположения на локальный адрес, указанный в «to ()».

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Это должно работать.

 from("direct:abc")
            .setHeader("Accept", simple("application/xml"))//Change it according to the file content
            .setHeader(Exchange.HTTP_METHOD, constant("GET"))
            .to("http://url/filename.xml")
            .to("file:///tmp/?fileName=yourFileName.xml");

Вы не можете использовать from("Some url").Вышеуказанный маршрут запускается всякий раз, когда появляется сообщение о прямой точке доступа: abc.Вы можете изменить yourFileName.xml на любое имя файла, которое вы хотите сохранить.

Вместо триггера с маршрута, вы также можете использовать таймер или любые другие средства самостоятельного запуска.

Причина, по которой вы не можете использовать с точки отдыха, подобной этой

from("http://url/filename.xml")  

, заключается в том, что вы не можете использовать с конечной точки http.Так что должен быть триггер.Infact сообщение об исключении довольно ясно, когда вы делаете это.Это говорит

org.apache.camel.spring.boot.CamelSpringBootInitializationException: org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[http://url/filename.xml]] -> [To[... because of Cannot consume from http endpoint
0 голосов
/ 06 июня 2018

компонент http нельзя использовать как потребитель, т.е.у вас не может быть маршрута, так как из ("http: // ...")

вам нужно использовать потребительский компонент, который будет запускать маршрут.Вы можете попробовать что-то вроде этого

from("timer:foo?fixedRate=true&period=5000")
.to("http://url/filename.xml")                         
.to("file://C:location") 
...