2011-09-04 9 views
5

Próbuję uzyskać listę map stworzonych przeze mnie w Mapach Google, a Maps API mówi co następuje:Korzystanie GET i POST z nagłówka HTTP odpowiedzialnego w Pythonie


Odzyskiwanie Lista map

Interfejs API danych map Google udostępnia kanał informacyjny zawierający mapy utworzone przez określonego użytkownika; ten kanał jest znany jako "metafeed". Typowym Mapy danych API metafeed jest żądanie GET z poniższego formularza:

Domyślne wnioski paszowe wszystkie mapy związane z uwierzytelnionego użytkownika

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

Standardowe wnioski metafeed wszystkie mapy związane ze skojarzoną identyfikator użytkownika

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

Należy pamiętać, że oba żądania GET wymagają nagłówka HTTP Authorization, który przekazuje token AuthSub lub GoogleLogin, w zależności od zaimplementowanego schematu uwierzytelniania. (The GoogleLogin żeton odpowiada procesu uwierzytelniania ClientLogin.)


nie mam pojęcia w jaki sposób utworzyć żądanie HTTP z nagłówków HTTP autoryzacji. Mam już kod aby otrzymać authorization_token, który przedstawia się następująco:

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

Wziąłem też spojrzeć na httplib docs, ale nie bardzo rozumiem (nie jestem profesjonalnym programistą).

Jakaś wskazówka?

Odpowiedz

7

Korzystanie urllib2 uczyni wszystko łatwiejszym:

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, nie jest API Google Maps danych przestarzałe? http://googlegeodevelopers.blogspot.com/2010/11/maps-data-api-deprecation-announcement.html

+0

Uderzyłeś! Wiedziałem, że będzie jakiś prosty sposób na zrobienie tego. Teraz, jeśli chodzi o wycofywanie API danych w Mapach, niektóre witryny mówią jedno, inne mówią ... Zobaczmy, czy to działa! – heltonbiker

+0

Tak, działa, otrzymuję ciąg znaków XML z informacjami o wszystkich moich mapach, ale albo nie wiem, co zrobić z danymi, a także API jest rzeczywiście przestarzałe. Tak więc będę nadal używać wyrażeń regularnych, aby pobrać 'MapID's z tego ciągu i zautomatyzować pobieranie map w formacie KML:' 'http://maps.google.com.br/maps/ms?msid=USERID.MAPID&msa=0&output= kml' – heltonbiker

Powiązane problemy