Avviso: questa pagina riguarda le API precedenti di Google, le API Google Data; è pertinente solo alle API elencate nella directory delle API Google Data, molte delle quali sono state sostituite da API più recenti. Per informazioni su una nuova API specifica, consulta la relativa documentazione. Per informazioni sull'autorizzazione delle richieste con un'API più recente, vedi Autenticazione e autorizzazione degli Account Google.
Ryan Boyd, team delle API di Google DataSettembre 2007
- Introduzione
- Ottenere e installare cURL
- Autenticazione a un servizio di dati Google
- Recupero di feed e voci
- Aggiornamento delle voci
- Creare voci
- Eliminazione delle voci
- Caricamento di oggetti multimediali
- Altri strumenti a riga di comando
- Conclusione
Introduzione
Le API Google Data utilizzano feed ed entry Atom (XML) come formato dei dati e HTTP come protocollo per la trasmissione dei dati, estendendo l'Atom Publishing Protocol. Pubblichiamo una serie di librerie client per semplificare l'interazione con le API di Google Data. Tuttavia, puoi sempre utilizzare strumenti di livello inferiore per interagire con i nostri servizi ed è piuttosto facile farlo con un po' di guida.
cURL è un'applicazione a riga di comando per eseguire richieste utilizzando una serie di protocolli, incluso HTTP. cURL viene spesso utilizzato dagli sviluppatori per testare i servizi Google Data, in quanto supporta la funzionalità HTTP necessaria per interagire con le API a un livello basso.
cURL fornisce solo il supporto per l'esecuzione della comunicazione HTTP, pertanto la conoscenza del protocollo Google Data, del protocollo specifico del servizio e del formato dei dati XML utilizzato è un prerequisito per l'utilizzo dell'applicazione. In questo articolo vengono menzionati altri strumenti per semplificare queste attività.
Questo articolo utilizza esempi basati sull'API Picasa Web Albums Data. Tuttavia, tutti questi esempi possono essere facilmente applicati ad altre API Google Data.
Ottenere e installare cURL
cURL è comunemente disponibile in un'installazione predefinita di molte piattaforme UNIX/Linux. Prova a digitare curl
nella tua shell preferita per verificare se lo strumento è installato e si trova in PATH
. Se non hai installato lo strumento, visita la pagina di download sul sito web cURL per ottenere l'origine ufficiale o un pacchetto binario fornito dagli utenti. Tieni presente che lo strumento a riga di comando utilizza la libreria libcurl
, che potrebbe essere offerta come pacchetto di download separato, quindi, se non esegui la compilazione dal codice sorgente, assicurati di scaricare un pacchetto "binario" anziché un pacchetto "libcurl". I pacchetti abilitati per SSL sono necessari se vuoi utilizzare cURL per acquisire token di autenticazione o per accedere ad alcuni servizi Google Data che richiedono l'utilizzo di SSL per le richieste.
Autenticazione a un servizio dati Google
Le richieste di dati Google autenticate vengono eseguite aggiungendo un'intestazione HTTP alla richiesta che contiene un token di autenticazione ClientLogin (app per computer/dispositivi mobili) o AuthSub (app web). Ai fini del test utilizzando cURL, ClientLogin è il metodo più semplice ed è documentato di seguito. Le intestazioni di autenticazione AuthSub potrebbero essere utilizzate con cURL, ma la procedura più avanzata di ottenimento dei token non rientra nell'ambito di questo articolo.
Utilizzo di ClientLogin
ClientLogin è destinato alle applicazioni installate (desktop/mobile). Con questo metodo di autenticazione, l'applicazione che utilizza le API Google Data gestisce direttamente il nome utente e la password dell'utente.
Una richiesta di autenticazione per ClientLogin accetta un nome utente, una password e un nome di servizio come variabili di post del modulo. Queste variabili vengono passate rispettivamente come argomenti Email
, Passwd
e service
. Questa richiesta genera una risposta con diversi token, uno dei quali può essere utilizzato per effettuare richieste al servizio Google Data. Tieni presente che gli argomenti dei dati passati con curl
devono essere codificati come URL se contengono caratteri non ASCII, che spesso compaiono negli argomenti Email
e Passwd
. Puoi chiedere a curl
di codificare gli URL di questi argomenti utilizzando il flag --data-urlencode
.
Esempio di richiesta:
curl https://www.google.com/accounts/ClientLogin \ --data-urlencode Email=brad.gushue@example.com --data-urlencode Passwd=new+foundland \ -d accountType=GOOGLE \ -d source=Google-cURL-Example \ -d service=lh2
Esempio di risposta:
SID=DQAAAHYBADCv2pSv7nflacDNwz3zEDUGtrSvNVDcpkSfddi77b3U5sEaHmP8YLWhmA36F9rk85mL8J5dqo4apn0T1vKz0fPGI9Xtnuet6cuE2ZzYvrNIwbSC_HjTqF4zudNQnnlDuD2wqZT-g1qXI8KhGAQZV4NexHZoQPlabTsGuRZeIBxj1A LSID=EUBBBIaBADCl-kNxvRVmcQghpt3cqSMfEooKR9flLOUZqwgP9OrZS83gse-KSdTNeXhxsET7FYenDhceP9lIPOmesH-t9qh-AWUHjjMdZEbUNeF9mWyzln6Z-FajaiG-cVFkqW0ZJ8ZbnCP30xXj6xFK6QxaAcqy_9Pej8jhEnxS9E61ftQGPg Auth=EUBBIacAAADK-kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxsET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfagZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh
Per informazioni specifiche sui parametri utilizzati nella richiesta precedente, consulta la documentazione di ClientLogin. In questo esempio, il servizio che utilizziamo è l'API Picasa Web Albums Data. Il nome del servizio (service
) è lh2
. I nomi dei servizi per altri servizi Google Data sono disponibili nella pagina Domande frequenti sulle API Google Data.
Il valore del token Auth
nella risposta precedente è l'unico valore necessario per l'autenticazione ai servizi Google Data. Il valore di questo token viene inserito in un'intestazione HTTP, che viene poi utilizzata per ogni richiesta a un servizio Google Data.
curl --silent --header "Authorization: GoogleLogin auth=EUBBIacAAADK\ -kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxs\ ET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfag\ ZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh" \ "http://picasaweb.google.com/data/feed/api/user/default"
Nota: il metodo di escape dei caratteri di nuova riga con i caratteri barra rovesciata ("\") riportato sopra non funziona nella shell dei comandi di Windows, quindi devi inserire l'intero comando su una riga se esegui curl
su Windows.
Recupero di feed e voci
Nelle API Google Data, il recupero di feed e voci viene eseguito tramite un'operazione HTTP GET
su un URL, con un insieme facoltativo di parametri di query. Poiché stiamo eseguendo una richiesta GET
, solo l'intestazione di autenticazione e l'URL devono essere passati a curl
. L'esempio riportato di seguito continuerà a utilizzare l'API Picasa Web Albums Data e viene utilizzato per recuperare un elenco di album di proprietà dell'utente autenticato. Tieni presente che in questo esempio abbiamo abbreviato il token di autenticazione a ABCDEFG
, ma al suo posto deve essere utilizzato il token completo (ad es. EUBBIacA
...32JKOuGh
riportato sopra).
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default"
Verrà restituito un blob XML non formattato:
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:geo='http://www.w3.org/2003/01/geo/wgs84_pos#' xmlns:gml='http://www.opengis.net/gml' xmlns:georss='http://www.georss.org/georss' xmlns:photo='http://www.pheed.com/pheed/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gphoto='http://schemas.google.com/photos/2007'><id>http://picasaweb.google.com/data/feed/base/user/brad.gushue</id><updated>2007-09-13T21:30:21.454Z</updated>...</entry></feed>
Esistono alcuni strumenti validi per formattare questo output in modo da renderlo più leggibile, tra cui tidy. Il modo più semplice per utilizzare tidy è reindirizzare l'output del comando curl a tidy come segue:
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default" | tidy -xml -indent -quiet
Il risultato è un feed molto più leggibile, come il seguente:
<?xml version='1.0' encoding='utf-8'?> <feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:geo='http://www.w3.org/2003/01/geo/wgs84_pos#' xmlns:gml='http://www.opengis.net/gml' xmlns:georss='http://www.georss.org/georss' xmlns:photo='http://www.pheed.com/pheed/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gphoto='http://schemas.google.com/photos/2007'> <id>http://picasaweb.google.com/data/feed/api/user/brad.gushue</id> <updated>2007-09-13T21:47:07.337Z</updated> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#user' /> <title type='text'>brad.gushue</title> <subtitle type='text'></subtitle> <icon> http://lh6.google.com/brad.gushue/AAAAj9zigp4/AAAAAAAAAAA/RiMAlXV4MFI/s64-c/brad.gushue</icon> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue' /> <link rel='alternate' type='text/html' href='http://picasaweb.google.com/brad.gushue' /> <link rel='self' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue?start-index=1&max-results=1000' /> <author> <name>Brad</name> <uri>http://picasaweb.google.com/brad.gushue</uri> </author> <generator version='1.00' uri='http://picasaweb.google.com/'> Picasaweb</generator> <openSearch:totalResults>8</openSearch:totalResults> <openSearch:startIndex>1</openSearch:startIndex> <openSearch:itemsPerPage>1000</openSearch:itemsPerPage> <gphoto:user>brad.gushue</gphoto:user> <gphoto:nickname>Brad</gphoto:nickname> <gphoto:thumbnail> http://lh6.google.com/brad.gushue/AAAAj9zigp4/AAAAAAAAAAA/RiMAlXV4MFI/s64-c/brad.gushue</gphoto:thumbnail> <entry> <id> http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593</id> <published>2007-05-23T04:55:52.000Z</published> <updated>2007-05-23T04:55:52.000Z</updated> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Trip To Italy</title> <summary type='text'>This was the recent trip I took to Italy.</summary> <rights type='text'>public</rights> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue/albumid/9810315389720904593' /> <link rel='alternate' type='text/html' href='http://picasaweb.google.com/brad.gushue/TripToItalyV2' /> <link rel='self' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593' /> <link rel='edit' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456' /> <author> <name>Brad</name> <uri>http://picasaweb.google.com/brad.gushue</uri> </author> <gphoto:id>9810315389720904593</gphoto:id> <media:group> ... </media:group> </entry> <entry> ... </entry> </feed>
Le singole voci possono essere recuperate allo stesso modo fornendo l'URL della voce, anziché un URL feed.
Aggiornamento delle voci
Le voci nelle API Google Data vengono aggiornate eseguendo un'operazione HTTP PUT
sull'URL di modifica con una nuova copia dell'XML della voce nel corpo della richiesta.
- Recupera la voce utilizzando il valore dell'URL
atom:link/@rel='self'
- Aggiorna la voce localmente per apportare le modifiche necessarie.
PUT
la voce al server, utilizzando il valore dell'URLatom:link/@rel='edit'
1. Recupero della voce
La voce può essere recuperata utilizzando uno dei due URL in grassetto nel blocco del feed riportato sopra. L'URL necessario è il valore href
per l'elemento link
con un rel='self'
.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593"
2. Aggiornamento della voce in locale
Dopo aver recuperato la voce, è necessario aggiornarla utilizzando un editor di testo o un'applicazione locale per apportare le modifiche necessarie. Nel comando riportato sopra per recuperare una voce, non abbiamo reindirizzato i risultati a tidy
come negli esempi precedenti. Il risultato è un file XML che rappresenta gli stessi dati, ma ha una formattazione diversa rispetto alla versione inviata a tidy
. Ai fini della modifica manuale di una voce, l'utilizzo di tidy
può spesso semplificare l'utilizzo dell'XML.
Nota: quando pubblichi la nuova voce, ricordati di includere tutte le definizioni dello spazio dei nomi XML utilizzate come attributi per atom:entry
. Se ometti questi campi, si verificheranno eccezioni di analisi. Inoltre, tidy
sostituirà gli spazi tra le definizioni dello spazio dei nomi con caratteri di nuova riga. Sebbene questo sia un XML valido, al momento i servizi Google Data non lo accettano. Se utilizzi tidy
, assicurati di aggiungere spazi aggiuntivi tra questi attributi nell'elemento entry
.
3. Aggiornamento della voce sul server
Utilizzando l'URL edit
, devi PUT
una copia della voce al servizio utilizzando cURL. È necessario aggiungere un'intestazione per indicare il tipo di contenuti inviati al server. Il seguente snippet presuppone che il file con la voce aggiornata sia salvato in updated_entry.xml.
curl --silent --data-binary "@updated_entry.xml" --request PUT --header "Content-Type: application/atom+xml" --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
Creazione di voci
Le voci nelle API di dati di Google vengono create eseguendo un HTTP POST
all'URL del post con una nuova voce. L'atom:id
viene assegnato dal server, pertanto non è necessario includerlo nelle nuove voci. Il modo più semplice per creare una nuova voce è prendere una voce precedente e modificarla. L'esempio seguente fa proprio questo.
- Recuperare una voce del modello utilizzando
atom:link/@rel='self'
- Modifica la voce del modello localmente per rimuovere le informazioni non necessarie e apportare le modifiche necessarie.
POST
all'entry al server, utilizzando l'URLpost
per il feed. Questo valore si trova nel feed recuperato come valorehref
dell'elementolink
con unrel='http://schemas.google.com/g/2005#post'
oppure nella documentazione del servizio all'indirizzo http://code.google.com.
1. Recuperare una voce del modello
È possibile recuperare una singola voce utilizzando il valore href
di un elemento link
con un rel='self'
nello stesso modo in cui è stata recuperata una voce prima di aggiornarla nell'esempio precedente.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593" | tidy -xml -indent -quiet > template_entry.xml
La risposta, dopo aver utilizzato tidy
, sarà simile alla seguente:
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:exif='http://schemas.google.com/photos/exif/2007' xmlns:geo='http://www.w3.org/2003/01/geo/wgs84_pos#' xmlns:gml='http://www.opengis.net/gml' xmlns:georss='http://www.georss.org/georss' xmlns:photo='http://www.pheed.com/pheed/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gphoto='http://schemas.google.com/photos/2007'> <id> http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389741123981</id> <published>2007-05-23T04:55:52.000Z</published> <updated>2007-05-23T04:55:52.000Z</updated> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Trip To Italy</title> <summary type='text'>This was the recent trip I took to Italy.</summary> <rights type='text'>public</rights> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue/albumid/9810315389741123981' /> <link rel='alternate' type='text/html' href='http://picasaweb.google.com/brad.gushue/TripToItaly' /> <link rel='self' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389741123981' /> <link rel='edit' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389741123981/1179896152905401' /> <author> <name>Brad</name> <uri>http://picasaweb.google.com/brad.gushue</uri> </author> <gphoto:id>9810315389741123981</gphoto:id> <gphoto:name>TripToItaly</gphoto:name> <gphoto:location></gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:timestamp>1179896152000</gphoto:timestamp> <gphoto:numphotos>0</gphoto:numphotos> <gphoto:numphotosremaining>500</gphoto:numphotosremaining> <gphoto:bytesUsed>0</gphoto:bytesUsed> <gphoto:user>brad.gushue</gphoto:user> <gphoto:nickname>Brad</gphoto:nickname> <gphoto:commentingEnabled>true</gphoto:commentingEnabled> <gphoto:commentCount>0</gphoto:commentCount> <media:group> <media:title type='plain'>Trip To Italy</media:title> <media:description type='plain'>This was the recent trip I took to Italy.</media:description> <media:keywords></media:keywords> <media:content url='http://lh5.google.com/brad.gushue/ADFUFKqeA5E/AAAAAAAAABc/V6Sga_Z03WU/TripToItaly.jpg' type='image/jpeg' medium='image' /> <media:thumbnail url='http://lh5.google.com/brad.gushue/ADFUFKqeA5E/AAAAAAAAABc/V6Sga_Z03WU/s160-c/TripToItaly.jpg' height='160' width='160' /> <media:credit>Brad</media:credit> </media:group> </entry>
2. Modificare la voce del modello
Vogliamo creare un album chiamato "Curling in Canada" con le foto della nostra recente partita di curling. Google Data ti consente di eliminare gli elementi Atom per i quali il server fornisce i valori, quindi per creare questa semplice voce del modello, rimuoveremo atom:id
, atom:published
, atom:updated
, atom:author
e i vari elementi atom:link
nel feed. In questo modo otterremo una voce di modello semplificata. La voce deve quindi essere modificata per rappresentare il nuovo album che stiamo creando:
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gphoto='http://schemas.google.com/photos/2007'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Curling in Canada</title> <summary type='text'>Pictures of all my curling matches in Canada.</summary> <gphoto:location>Canada</gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:commentingEnabled>true</gphoto:commentingEnabled> </entry>
Nota: quando pubblichi la nuova voce, ricordati di includere tutte le definizioni dello spazio dei nomi XML utilizzate come attributi per atom:entry
. Se ometti questi campi, si verificheranno eccezioni di analisi. Inoltre, tidy
sostituirà gli spazi tra le definizioni dello spazio dei nomi con caratteri di nuova riga. Sebbene questo sia un XML valido, al momento i servizi Google Data non lo accettano. Se utilizzi tidy
, assicurati di aggiungere spazi aggiuntivi tra questi attributi nell'elemento entry
.
3. Pubblicazione della nuova voce sul server
Il comando curl
per pubblicare una nuova voce sul server è molto simile all'aggiornamento di una voce esistente, tranne per l'URL:
curl --silent --request POST --data-binary "@template_entry.xml" --header "Content-Type: application/atom+xml" --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/brad.gushue" | tidy -xml -indent -quiet
Se il post è andato a buon fine, l'output XML risultante è una copia della voce appena creata. Questa voce includerà gli elementi generati dal server al momento della creazione della voce, inclusi i valori degli elementi atom:id
, atom:published
, atom:updated
e atom:link
. I valori link
risultanti possono essere utilizzati per modificare o eliminare la voce, a condizione che non vengano apportate ulteriori modifiche nel frattempo.
Eliminazione delle voci
L'eliminazione delle voci è molto simile all'aggiornamento delle voci, tranne per il fatto che viene utilizzato un metodo HTTP DELETE
anziché un metodo HTTP PUT
e non è necessario inviare dati. Come per la richiesta di aggiornamento, l'URL edit
viene utilizzato come destinazione della richiesta HTTP.
curl --silent --request DELETE --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
Caricamento di oggetti multimediali
Una funzionalità importante dell'API Picasa Web Albums Data e dell'API Documents List Data è la possibilità di caricare oggetti binari. cURL può eseguire facilmente il caricamento di dati binari e di un'intestazione slug. Tuttavia, l'API Documents List data attualmente richiede la pubblicazione dell'XML insieme ai dati binari come messaggio MIME multipart. La creazione del messaggio in più parti non rientra nell'ambito di questo articolo.
L'esempio riportato di seguito mostra come caricare un'immagine denominata sweeping_the_rock.png
in un Picasa Web Album con il titolo "Sweeping the rock":
curl --silent --request POST --data-binary "@sweeping_the_rock.png" --header "Slug: Sweeping the rock" --header "Content-Type: image/png" --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/brad.gushue/albumid/5113621341847124417" | tidy -xml -indent -quiet
Altri strumenti a riga di comando
Alcuni sviluppatori preferiscono imparare o eseguire il debug utilizzando altri strumenti a riga di comando.
Gli strumenti più utilizzati includono:
- telnet, openssl vengono utilizzati per stabilire connessioni socket non elaborate (rispettivamente basate su testo normale e SSL) ai server web e possono essere utilizzati per interagire con i servizi Google Data. Tieni presente che non tutti i servizi Google Data potrebbero supportare SSL. Ecco come aprire le connessioni:
telnet picasaweb.google.com 80
(API Picasa Web Albums Data)openssl s_client -connect www.google.com:443
(API Google Calendar Data e altri servizi su www.google.com)
Quando invii dati HTTP non elaborati, tieni presente che le operazioniPOST /data/feed/api/user/brad.gushue HTTP/1.1 Host: picasaweb.google.com Authorization: GoogleLogin auth=ABCDEFG Content-Length: 493 <entry xmlns='http://www.w3.org/2005/Atom' xmlns:gphoto='http://schemas.google.com/photos/2007'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Curling in Canada</title> <summary type='text'>Pictures of all my curling matches in Canada.</summary> <gphoto:location>Canada</gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:commentingEnabled>true</gphoto:commentingEnabled> </entry>
POST
ePUT
richiedono il calcolo del valore di un'intestazioneContent-Length
. Puoi utilizzare lo strumento UNIXwc
per calcolare questo valore. Inserisci tutti i contenuti del corpo HTTP in un file di testo cometemplate_entry.xml
(esempio utilizzato sopra) ed eseguiwc -c template_entry.xml
. Spesso è difficile eseguire il debug se utilizzi per errore un valore errato per l'intestazioneContent-Length
. - wget viene in genere utilizzato per scaricare dati da un server web in un file locale. Tuttavia,
wget
offre molte opzioni che lo rendono in grado di eseguire tutti i diversi tipi di richieste necessari per interagire con i servizi di dati Google. Ecco un esempio di come utilizzarewget
perPOST
una nuova voce di album in Picasa Web Album:wget --post-file template_entry.xml --header "Authorization: GoogleLogin auth=ABCDEFG" --header "Content-Type: application/atom+xml" "http://picasaweb.google.com/data/feed/api/user/brad.gushue"
- xsltproc è uno strumento per applicare trasformazioni XSL (XSLT) ai documenti XML. Può essere utilizzato per estrarre facilmente i dati desiderati da una voce o da un feed XML restituito dalle API Google Data oppure per generare voci nuove o aggiornate.
Conclusione
Come hai visto, cURL e diversi altri strumenti da riga di comando possono essere utilizzati per interagire facilmente con i servizi Google Data utilizzando XML e HTTP non elaborati. Se hai domande sull'utilizzo di questi strumenti con la tua API Google Data preferita, partecipa ai forum specifici per le API.