2011-09-04 4 views
5

sto cercando di ottenere l'elenco di mappe create da me in Google Maps, e l'API di Google Maps dice il seguente:Utilizzando GET e POST con autorizzazione HTTP in Python


Recupero di un elenco di mappe

L'API Maps dati fornisce un feed che elenca le mappe create da un particolare utente; questo feed è noto come "metafeed". Un tipico API metafeed mappe dei dati è una richiesta GET della forma seguente:

Le richieste di alimentazione di default tutte le mappe associati all'utente autenticato

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

Le richieste metafeed standard di tutte le mappe associati con l'UserID associato

Nota che entrambe le richieste GET richiedono un'intestazione HTTP di autorizzazione, passando un token AuthSub o GoogleLogin, a seconda dello schema di autenticazione che hai implementato. (Il token GoogleLogin corrisponde al processo di autenticazione ClientLogin.)


non ho idea di come creare richiesta HTTP con l'autorizzazione intestazioni HTTP. Ho già il codice per ottenere il authorization_token, che è la seguente:

# 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] 

Ho anche preso uno sguardo al httplib documenti, ma non ho capito molto (io non sono un programmatore professionista).

Qualsiasi indizio?

risposta

7

Utilizzando urllib2 renderà tutto più facile:

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, non è l'API di Google Maps dati deprecato? http://googlegeodevelopers.blogspot.com/2010/11/maps-data-api-deprecation-announcement.html

+0

Hai colpito il posto! Sapevo che ci sarebbe stato un modo semplice per farlo. Ora per la deprecazione dell'API di Maps Data, alcuni siti dicono una cosa, alcuni dicono altri ... Vediamo se funziona! – heltonbiker

+0

Sì, funziona, torno una stringa XML con informazioni su tutte le mie mappe, ma io o non so che cosa fare con i dati, e anche l'API è davvero deprecato. Così ho continuare ad usare espressioni regolari per ottenere i 'MapID's da questa stringa e automatizzare mappa il download in formato KML:' 'http://maps.google.com.br/maps/ms?msid=USERID.MAPID&msa=0&output= kml' – heltonbiker