3

我正在研究play framework 2.1.1 (java) 和googlemap v3 (local website)。

我想使用 googlemap url 获取纬度和经度。我希望这个 url 返回我的json响应,以便稍后解析它并在我的数据库中插入 lat 和 long。当它不是 googlemap url 时它可以正常工作,但是当我在代码中使用这种 url 时出现著名的“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 密钥,但又失败了。
  • 我没有发送太多要求。

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

4

2 回答 2

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();

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

于 2013-07-03T10:05:48.250 回答
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();
...
于 2013-05-23T11:08:44.740 回答