播放框架:从谷歌地图网址获取json时的Request_denied

时间:2013-05-08 09:58:37

标签: json google-maps url frameworks playframework

我正在开发 play framework 2.1.1 (java)和 googlemap v3 (本地网站)。

我想使用googlemap网址获取经度和纬度。 我希望这个url返回 json 响应以便稍后解析并在我的数据库中插入lat和long。 当它不是googlemap网址时它工作正常,但当我在我的代码中使用这种网址时,我有着名的“request_denied”错误:

http://maps.googleapis.com/maps/api/geocode/json?address=Paris&sensor=false

我不知道为什么,我读到这个错误来自缺少传感器参数,但你可以看到它在我的网址中。

关于我的代码:

public static Result displaySomeJson(){
    Promise<WS.Response> request= WS.url("http://maps.googleapis.com/maps/api/geocode/json?address=Paris&sensor=false").get();
    JsonNode json = request.asJson();
    return ok(json.toString())
}

它给了我: {“results”:[],“status”:“REQUEST_DENIED”}

  • 我还尝试使用 http://maps.GOOGLE.com 而不是 http://maps.GOOGLEAPIS.com ,但我得到了相同的结果。
  • 我也尝试过使用 api密钥,但又失败了。
  • 我没有发出太多请求。

如果您有任何建议,请分享。

2 个答案:

答案 0 :(得分:2)

好的,我发现了这种方式:

Promise<WS.Response> request =
WS.url("http://maps.googleapis.com/maps/api/geocode/json")
.setQueryParameter("address",adresse).setQueryParameter("sensor", "true")
.post("content");

然后我解析了它:

String lat = request.get().asJson().path("results").get(0).get("geometry").get("location").get("lat").toString();
String long = request.get().asJson().path("results").get(0).get("geometry").get("location").get("lng").toString();

我不知道这是否是一种“明确”的方式,但它运作正常。 :)

答案 1 :(得分:0)

我遇到了与Play 2相同的问题。在使用HttpUrlConnection将WS.url更改为旧式之后,它工作正常。不知道为什么WS.url不起作用。

URL theUrl = new URL("http://maps.googleapis.com/maps/api/geocode/json?address=Paris&sensor=false");
HttpURLConnection urlConn = (HttpURLConnection) theUrl.openConnection();
...