在Python中使用带有授权HTTP头的GET和POST



我试图获得我在谷歌地图中创建的地图列表,地图API说以下内容:


检索map列表

Maps Data API提供了一个提要,其中列出了由特定用户创建的地图;这个提要被称为"元提要"。典型的Maps Data API元feed是以下形式的GET请求:

默认提要请求与经过身份验证的用户关联的所有映射

GET http://maps.google.com/maps/feeds/maps/default/full
Authorization: GoogleLogin auth="authorization_token"

标准元feed请求与关联userID关联的所有映射

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文档,但不太理解(我不是专业程序员)。

什么线索吗?

使用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

最新更新