Apache Camel - Простой HTTPS Google Places Call - Разница между Spring DSL и Java DSL для компонента Camel-http? - PullRequest
0 голосов
/ 16 марта 2012

Я пытаюсь интегрировать Google Places API, используя Apache Camel (2.10-SNAPSHOT) и Spring (3.0.7.RELEASE) с Tomcat (7.0.26) в качестве сервера веб-конфигурации.

Когда я объявляю маршрут в XML-конфигурации Spring (см. Ниже), я вижу правильный выходной ответ в моих журналах Tomcat.

</p> <pre><code><route id="google-places-route"> <from uri="direct:start" /> <to uri="https://maps.googleapis.com/maps/api/place/search/json?location=40.446788,-79.950559&amp;radius=500&amp;types=food&amp;sensor=false&amp;key=my-google-api-key" /> <to uri="stream:out"/> </split> </route>

Обратите внимание, что здесь используется верблюжья схема https, а НЕ http.

Теперь я пытаюсь сделать то же самое, определяя мой маршрут в классе Java, который расширяет RouterBuilder

public class GooglePlacesRoute extends RouteBuilder {</p> <pre><code>@Override public void configure() throws Exception { from("direct:start").process(new MyCustomProcessor()).to("https://maps.googleapis.com/maps/api/place/search/json?location=40.446788,-79.950559&amp;radius=500&amp;types=food&amp;sensor=false&amp;key=my-google-api-key").to("stream:out"); }

}


Класс MyCustomProcessor реализует Процессор {

@Override
public void process(Exchange exchange) throws Exception {

    exchange.setPattern(ExchangePattern.InOut);
        Message inMessage = exchange.getIn();


    inMessage.setHeader(Exchange.HTTP_METHOD, "GET");
    exchange.getIn().setBody("", String.class);

}

}

Мой маршрут Camel развернут и запущен правильно.Однако, когда я вызвал его, я не получил ожидаемый результат.Я получаю следующий ответ от серверов Google.

{ "html_attributions" : [], "results" : [], "status" : "REQUEST_DENIED" }

Я предполагаю, что мне не нужно делать ничего особенного в моем Java DSL для обработки HTTPS (вместо HTTP).Это предположение верно?

Что мне здесь не хватает?

Спасибо.

1 Ответ

2 голосов
/ 16 марта 2012

Попробуйте использовать & вместо &amp; в вашем запросе.

https://maps.googleapis.com/maps/api/place/search/json?location=40.446788,-79.950559&radius=500&types=food&sensor=false&key=my-google-api-key
...