对Google Places API的PlayFramework请求

时间:2012-03-28 14:25:27

标签: playframework google-places-api

我不确定之前是否曾提出这个问题,但我必须使用Google Places API中的一些数据进行简单的播放应用程序。

我发现了这样的请求:

https://maps.googleapis.com/maps/api/place/search/json?location=46.5882,-95.4075&radius=50000&types=lodging&sensor=false&key=[your_api_key]

完全适用于浏览器,但不适用于Play! (它返回REQUEST_DENIED):

parameters.put("location", cityFound.latitude+","+cityFound.longitude);
        parameters.put("radius", "50000");
        parameters.put("types", "lodging");
        parameters.put("sensor", "true");
        parameters.put("key", "GOOGLE_PLACES_KEY");
        WSRequest wsRequest = WS.url("https://maps.googleapis.com/maps/api/place/search/json").setParameters(parameters);

经过一番头疼后,我发现在浏览器中,如果我尝试执行http请求而不是上面的https请求REQUEST_DENIED

所以我怀疑来自Play我没有ssl证书就无法执行此https请求?

另外,为这样的事情支付数百美元的ssl证书是不是很难看(或者你知道任何易于在Play中实现的免费解决方案吗?)

3 个答案:

答案 0 :(得分:1)

您无需购买证书。您必须确保应用程序接受服务器发送的证书。

但更重要的是检查应用程序日志中的任何异常或错误消息。您的应用程序是否真的回退到您已定义为使用https的http?您使用了正确的Google API密钥吗?

答案 1 :(得分:1)

问题已解决。

令人难以置信的是,错误是如何发生的。

parameters.put("key", "GOOGLE_PLACES_KEY");

它应该是:

parameters.put("key", GOOGLE_PLACES_KEY);

因为它是一个常量定义。

答案 2 :(得分:0)

您可能可以导出googleapis提供给您的浏览器的证书。在Firefox中,您可以通过选项 - >高级 - >加密 - >查看证书来完成。