我有调用Google地理编码API的服务器端代码,如下所示:
http://maps.google.com/maps/geo?q=40.714224,-73.961452&output=json&sensor=false&key=API_KEY
其中API_KEY
是我的API密钥。我按预期收到JSON回复,但响应始终为602
(未知地址)。我的网址错了吗? (我也尝试过Google docs中的网址,但会返回status: 'REQUEST_DENIED'
。
还有什么可能是错的?
更新 好吧,实际上我的实现似乎是一个错误,而不是URL。这就是我做到的:
api_params = {
'q': '40.714224,-73.961452',
'sensor': 'false',
'key': KEY,
'output': 'json'
}
# make the api call
http_response = urllib.urlopen('http://maps.google.com/maps/geo',
urllib.urlencode(api_params))
r = json.load(http_response)
但将其更改为:
api_params = {
#'q': str(lat) + ',' + str(lng),
'q': '40.714224,-73.961452',
'sensor': 'false',
'key': KEY,
'output': 'json'
}
# make the api call
http_response = urllib.urlopen('http://maps.google.com/maps/geo?q='+api_params['q']+'&output=json&sensor=false&key='+api_params['key'])
r = json.load(http_response)
print r
解决了这个问题。所以我的新问题是,第一个问题出了什么问题?
答案 0 :(得分:1)
尝试使用HTTP观察程序确保这是您的应用程序中发送的实际URL。有可能它没有被正确编码或者可能被错误地组装。由于您没有收到请求被拒绝,我们能够在直接查看时获得良好响应,这似乎是最佳起点。希望有所帮助!
答案 1 :(得分:1)
第一个执行POST请求,第二个执行GET请求。
您可能还想使用urllib.urlencode函数进行连接。
但最简单的方法是使用geopy。