0

Web コンテナー サーバーとして Apache Camel (2.10-SNAPSHOT) と Spring (3.0.7.RELEASE) を使用して Google Places API を Tomcat (7.0.26) と統合しようとしています。

Spring 構成 xml でルートを宣言すると (以下を参照)、Tomcat ログで正しい出力応答を確認できます。

<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>

ここで使用されているキャメル スキームは、http ではなく https であることに注意してください。

今、私はルートを拡張するJavaクラスで定義することで同じことをしようとしていますRouterBuilder

public class GooglePlacesRoute extends RouteBuilder {

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

}


class MyCustomProcessor implements Processor {

@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 で (HTTP の代わりに) HTTPS を処理するために特別なことをする必要はないと仮定しています。この仮定は正しいですか?

ここで何が欠けていますか?

ありがとう。

4

1 に答える 1

2

リクエスト&の代わりに使用してみてください。&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
于 2012-03-16T00:16:52.497 に答える