我不确定之前是否曾提出这个问题,但我必须使用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中实现的免费解决方案吗?)
答案 0 :(得分:1)
您无需购买证书。您必须确保应用程序接受服务器发送的证书。
但更重要的是检查应用程序日志中的任何异常或错误消息。您的应用程序是否真的回退到您已定义为使用https的http?您使用了正确的Google API密钥吗?
答案 1 :(得分:1)
问题已解决。
令人难以置信的是,错误是如何发生的。
parameters.put("key", "GOOGLE_PLACES_KEY");
它应该是:
parameters.put("key", GOOGLE_PLACES_KEY);
因为它是一个常量定义。
答案 2 :(得分:0)
您可能可以导出googleapis提供给您的浏览器的证书。在Firefox中,您可以通过选项 - >高级 - >加密 - >查看证书来完成。