在Python中使用带Authorization头的GET和POST请求
我想在谷歌地图上获取我创建的地图列表,地图API给出了以下信息:
获取地图列表
地图数据API提供了一个可以列出特定用户创建的地图的接口,这个接口被称为“元数据源”。一个典型的地图数据API元数据源是通过GET请求来获取的,格式如下:
默认的数据源请求的是与已认证用户相关的所有地图。
GET http://maps.google.com/maps/feeds/maps/default/full
Authorization: GoogleLogin auth="authorization_token"
标准的元数据源请求的是与特定用户ID相关的所有地图。
GET http://maps.google.com/maps/feeds/maps/userID/full
Authorization: GoogleLogin auth="authorization_token"
需要注意的是,这两个GET请求都需要一个授权的HTTP头,里面要传递一个AuthSub或GoogleLogin的令牌,这取决于你使用了哪种认证方式。(GoogleLogin令牌对应的是ClientLogin的认证过程。)
我不知道怎么创建带有授权HTTP头的HTTP请求。我已经有了获取authorization_token
的代码,代码如下:
# coding: utf-8
import urllib, re, getpass
# http://code.google.com/intl/pt-BR/apis/maps/documentation/mapsdata/developers_guide_protocol.html#ClientLogin
username = 'heltonbiker'
senha = getpass.getpass('Senha do usuário ' + username + ':')
dic = {
'accountType': 'GOOGLE',
'Email': (username + '@gmail.com'),
'Passwd': senha,
'service': 'local',
'source': 'helton-mapper-1'
}
url = 'https://www.google.com/accounts/ClientLogin?' + urllib.urlencode(dic)
output = urllib.urlopen(url).read()
authid = output.strip().split('\n')[-1].split('=')[-1]
我也看了一下httplib
的文档,但没太明白(我不是专业程序员)。
有没有什么线索?
1 个回答
8
使用urllib2会让一切变得更简单:
import urllib2
request = urllib2.Request('http://maps.google.com/maps/feeds/maps/default/full')
request.add_header('Authorization', 'GoogleLogin auth=%s' % authorization_token)
urllib2.urlopen(request).read()
顺便问一下,谷歌地图数据API不是已经不再支持了吗? http://googlegeodevelopers.blogspot.com/2010/11/maps-data-api-deprecation-announcement.html