为什么使用python和curl的不同POST请求会返回与google api相同的地理位置

时间:2016-04-04 02:49:22

标签: python json google-maps curl

我的问题与下面的链接相同。这个问题仍然没有答案: Why different requests return same geolocation with google geolocation api

我有同样的问题,为什么每次请求都会获得相同的Google数据响应?我得到的数据总是一样的。

如果我将curl POST请求发送给Google,无论JSON键值中的值如何,都会得到相同的响应。

如果我使用Python 2.7使用请求发送POST请求,我总是对同一个响应,而不是我在变量中设置的值用于URL POST请求。

任何理想,需要什么关键值,所以我可以提取所需的数据。例如,我想为各种区域代码解析“locationAreaCode”,我希望请求为每次查找返回“lat”和“lng”。

在MAC OS中使用终端:

curl -d @your_filename.json -H "Content-Type: application/json" -i https://www.googleapis.com/geolocation/v1/geolocate?key=[use your Google API key]

注意:“your_filename.json”是.json文件的文字名称。 这个.json文件目前在下面配置(我尝试了各种键值):

[
  "cellTowers",
  [
  "locationAreaCode",
  415
  ]
]

当我使用带有请求语法的python 2.7时,我将得到一个“响应200”,我将得到完全相同的数据返回。

我总是得到同样的回答: 确认状态代码是:200

这是发送给Google的POST网址 [链接 - 必须删除自新用户到stackoverflow] POST请求返回的数据是:

{
 "location": {
  "lat": 25.7459338,
  "lng": -80.30449569999999
 },
 "accuracy": 37571.0
}

python 2.7的输出:

python API_json2-6.py
[link - had to remove since new user to stackoverflow]
Status Code is:  200
Confirming Status Code is:  200
This is the POST url sent to Google 
https://www.googleapis.com/geolocation/v1/geolocate?key=[your google api KEY]&locationAreaCode=415
Data Returned on the POST request is: 

    {
     "location": {
      "lat": 25.7459338,
      "lng": -80.30449569999999
     },
     "accuracy": 37571.0
    }

谢谢!

1 个答案:

答案 0 :(得分:0)

Geocoding Strategies中所述,服务器端地理编码应用程序的基本架构如下:

  • 基于服务器的应用程序将地址发送到服务器的地理编码脚本。
  • 脚本检查缓存以查看该地址最近是否已进行地理编码。
  • 如果有,脚本会将该地理编码返回给原始应用程序。
  • 如果没有,脚本会向Google发送地理编码请求。一旦有结果,它就会缓存它,然后将地理编码返回到原始应用程序。
  • 稍后,地理编码用于在Google地图上显示数据。

还请注意在定期运行客户端地理编码请求时要避免的事项的给定配额注意事项以及缓存注意事项,其中Google Maps API允许您缓存地理编码(即将它们存储在服务器上以用于有限的时期)。如果您必须重复查找相同的地址,缓存可能很有用。