【问题标题】:google distance matrix api strangegoogle距离矩阵api奇怪
【发布时间】:2012-05-09 12:51:06
【问题描述】:

我在这里遇到了一个奇怪的问题,

当我从 web 浏览器或 java 命令行在 url 下运行时

http://maps.googleapis.com/maps/api/distancematrix/json?origins=416%2063,Sweden&destinations=424%2069,Stor%C3%A5s%20Industrigatan%2020,Angered,G%C3%B6teborg&sensor=false

我得到以下结果。

{
  "destination_addresses" : [ "Storås Industrigata 20, 424 69
Angered, Sweden" ],
  "origin_addresses" : [ "Gothenburg, Sweden" ],
  "rows" : [
     {
        "elements" : [
           {
              "distance" : {
                 "text" : "10.4 km",
                 "value" : 10388
              },
              "duration" : {
                 "text" : "15 mins",
                 "value" : 924
              },
              "status" : "OK"
           }
       ]
     }
  ],
  "status" : "OK"
}    

但是当我从 glassfish 服务器运行相同的 url 时,我的意思是发送一个 http请求来自 表单提交我得到以下奇怪的响应

{ "destination_addresses" : [ "" ],
  "origin_addresses" : [ "Gothenburg, Sweden" ],
  "rows" : [
     {
        "elements" : [
           {
              "status" : "NOT_FOUND"
           }
        ]
     }
  ],
  "status" : "OK"
}

请不要在这种情况下destination_addresses 为空并且状态为 NOT_FOUND。

我用来获取响应的Java代码是

private String getResponse(String URL) throws Exception {
        InputStream stream = new URL(URL).openStream();
        byte[] array = new byte[stream.available()];
        stream.read(array);
        return new String(array);
}

请指导我解决这个问题,

谢谢....

【问题讨论】:

  • 向我们展示您的代码,最好是SSCCEStack Overflow is not a Mind Reader or Crystal Ball.
  • 我已经编辑了这个问题,奇怪的是,当我通过类中的 main 方法运行时,代码给出了预期的结果,但是当我使用 html 表单提交运行相同的方法时(假设在 servlet ) 响应为 NOT_FOUND
  • 问题显然是您在 servlet 中实际使用的 URL。我的钱是在您从表单请求中获得它之后没有正确编码。添加一些日志记录,调试您的 servlet。
  • 你没有抓住重点。您认为正在使用的网址没有因为它没有正确编码。

标签: java google-maps google-maps-api-3 distance


【解决方案1】:

使用 https
除非谷歌不会让你的软件连接。

和 获取 api 密钥。

阅读: https://developers.google.com/maps/documentation/distance-matrix/start

https://maps.googleapis.com/maps/api/distancematrix/json?origins=416%2063,Sweden&destinations=424%2069,Stor%C3%A5s%20Industrigatan%2020,Angered,G%C3%B6teborg&sensor=false&key=YOUR_API_KEY

请务必将 YOUR_API_KEY 替换为您的实际 API 密钥

【讨论】:

    【解决方案2】:

    在 Java 中使用距离矩阵 API 时,我遇到了类似的问题。在我的请求中设置语言似乎可以使它起作用:

        DistanceMatrixElement distanceMatrixElement;
        DistanceMatrix matrix;
    
        try
        {
            matrix = distanceMatrixApiRequest
                    .origins(...)
                    .destinations(...)
                    .language("en")
                    .await();
        }
    

    【讨论】: