2011-09-04 64 views
5

我試圖讓本人在谷歌地圖中創建的地圖列表,地圖API授權HTTP標頭說以下內容:使用GET和POST可以用Python


檢索地圖列表

Maps Data 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文檔,但並沒有多少了解(我不是一個專業的程序員)。

任何線索?

回答

7

使用的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() 

BTW,是不是谷歌地圖數據API棄用? http://googlegeodevelopers.blogspot.com/2010/11/maps-data-api-deprecation-announcement.html

+0

你已經擊中了現場!我知道會有一些簡單的方法來做到這一點。現在對於Maps Data API棄用,有些網站會說一件事,有些則會說其他的...讓我們看看它是否有效! – heltonbiker

+0

是的,它的工作原理是,我得到一個帶有關於我所有地圖信息的XML字符串,但是我不知道該如何處理數據,而且API的確已被棄用。因此,我將繼續使用正則表達式從此字符串中獲取'MapID'並以KML格式自動執行地圖下載:''http://maps.google.com.br/maps/ms?msid=USERID.MAPID&msa=0&output= kml' – heltonbiker