Avertissement : Cette page concerne les anciennes API de Google, les API Google Data. Elle ne s'applique qu'aux API listées dans le répertoire des API Google Data, dont beaucoup ont été remplacées par des API plus récentes. Pour en savoir plus sur une nouvelle API spécifique, consultez sa documentation. Pour savoir comment autoriser les requêtes avec une API plus récente, consultez Authentification et autorisation des comptes Google.
Ryan Boyd, équipe des API de données Google septembre 2007
- Introduction
- Obtenir et installer cURL
- S'authentifier auprès d'un service de données Google
- Récupérer des flux et des entrées
- Mettre à jour des entrées
- Créer des entrées
- Supprimer des entrées
- Importer des objets multimédias
- Autres outils de ligne de commande
- Conclusion
Introduction
Les API Google Data utilisent des flux et des entrées Atom (XML) comme format de données et HTTP comme protocole de transmission des données, ce qui étend le protocole de publication Atom. Nous publions un certain nombre de bibliothèques clientes pour faciliter l'interaction avec les API Google Data. Toutefois, vous pouvez toujours utiliser des outils de niveau inférieur pour travailler avec nos services. C'est assez facile à faire avec un peu d'aide.
cURL est une application en ligne de commande permettant d'effectuer des requêtes à l'aide de différents protocoles, y compris HTTP. Les développeurs utilisent souvent cURL pour tester les services de données Google, car il est compatible avec la fonctionnalité HTTP requise pour interagir avec les API à un niveau inférieur.
cURL ne permet que d'effectuer la communication HTTP. Il est donc nécessaire de connaître le protocole Google Data, le protocole spécifique au service et le format de données XML utilisé pour travailler avec l'application. D'autres outils sont mentionnés dans cet article pour faciliter ces tâches.
Cet article utilise des exemples basés sur l'API Picasa Web Albums Data. Toutefois, tous ces exemples peuvent être facilement appliqués à d'autres API Google Data.
Obtenir et installer cURL
cURL est généralement disponible dans l'installation par défaut de nombreuses plates-formes UNIX/Linux. Essayez de saisir curl
dans votre interface système préférée pour voir si l'outil est installé et se trouve dans votre PATH
. Si l'outil n'est pas installé, accédez à la page de téléchargement sur le site Web cURL pour obtenir la source officielle ou un package binaire fourni par un utilisateur. Notez que l'outil de ligne de commande utilise la bibliothèque libcurl
, qui peut être proposée en tant que package de téléchargement distinct. Par conséquent, si vous ne compilez pas à partir de la source, veillez à télécharger un package "binaire" plutôt qu'un package "libcurl". Les packages compatibles avec SSL sont nécessaires si vous souhaitez utiliser cURL pour obtenir des jetons d'authentification ou accéder à certains services de données Google qui nécessitent l'utilisation de SSL pour les requêtes.
S'authentifier auprès d'un service de données Google
Les requêtes authentifiées de données Google sont effectuées en ajoutant un en-tête HTTP à la requête, qui contient un jeton d'authentification ClientLogin (applications pour ordinateur/mobile) ou AuthSub (applications Web). Pour les tests à l'aide de cURL, ClientLogin est la méthode la plus simple. Elle est décrite ci-dessous. Les en-têtes d'authentification AuthSub peuvent être utilisés avec cURL, mais le processus plus avancé d'obtention des jetons ne fait pas partie de cet article.
Utiliser ClientLogin
ClientLogin est destiné aux applications installées (de bureau ou mobiles). Avec cette méthode d'authentification, l'application qui utilise les API Google Data gère directement le nom d'utilisateur et le mot de passe de l'utilisateur.
Une demande d'authentification pour ClientLogin utilise un nom d'utilisateur, un mot de passe et un nom de service comme variables de publication de formulaire. Ces variables sont transmises respectivement en tant qu'arguments Email
, Passwd
et service
. Cette requête génère une réponse avec plusieurs jetons, dont l'un peut être utilisé pour envoyer des requêtes au service de données Google. Notez que les arguments de données transmis avec curl
doivent être encodés en URL s'ils contiennent des caractères non ASCII, qui apparaissent souvent dans les arguments Email
et Passwd
. Vous pouvez demander à curl
d'encoder ces arguments au format URL à l'aide de l'indicateur --data-urlencode
.
Exemple de requête :
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
Exemple de réponse :
SID=DQAAAHYBADCv2pSv7nflacDNwz3zEDUGtrSvNVDcpkSfddi77b3U5sEaHmP8YLWhmA36F9rk85mL8J5dqo4apn0T1vKz0fPGI9Xtnuet6cuE2ZzYvrNIwbSC_HjTqF4zudNQnnlDuD2wqZT-g1qXI8KhGAQZV4NexHZoQPlabTsGuRZeIBxj1A LSID=EUBBBIaBADCl-kNxvRVmcQghpt3cqSMfEooKR9flLOUZqwgP9OrZS83gse-KSdTNeXhxsET7FYenDhceP9lIPOmesH-t9qh-AWUHjjMdZEbUNeF9mWyzln6Z-FajaiG-cVFkqW0ZJ8ZbnCP30xXj6xFK6QxaAcqy_9Pej8jhEnxS9E61ftQGPg Auth=EUBBIacAAADK-kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxsET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfagZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh
Veuillez consulter la documentation ClientLogin pour obtenir des informations spécifiques sur les paramètres utilisés dans la requête ci-dessus. Dans cet exemple, le service que nous utilisons est l'API Picasa Albums Web Data. Le nom du service (service
) est lh2
. Les noms de service des autres services de données Google sont disponibles sur la page Questions fréquentes sur les API Google Data.
La valeur du jeton Auth
dans la réponse ci-dessus est la seule valeur nécessaire pour l'authentification auprès des services de données Google. La valeur de ce jeton est intégrée à un en-tête HTTP, qui est ensuite utilisé pour chaque requête adressée à un service de données Google.
curl --silent --header "Authorization: GoogleLogin auth=EUBBIacAAADK\ -kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxs\ ET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfag\ ZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh" \ "http://picasaweb.google.com/data/feed/api/user/default"
Remarque : La méthode d'échappement des caractères de nouvelle ligne avec des barres obliques inverses ("\") ci-dessus ne fonctionne pas dans l'invite de commandes Windows. Vous devez donc saisir la commande entière sur une seule ligne si vous exécutez curl
sur Windows.
Récupérer des flux et des entrées
Dans les API de données Google, la récupération des flux et des entrées s'effectue en exécutant une requête HTTP GET
sur une URL, avec un ensemble facultatif de paramètres de requête. Étant donné que nous effectuons une requête GET
, seuls l'en-tête d'authentification et l'URL doivent être transmis à curl
. L'exemple ci-dessous continue d'utiliser l'API Picasa Web Albums Data et permet de récupérer la liste des albums appartenant à l'utilisateur authentifié. Notez que nous avons raccourci le jeton d'authentification à ABCDEFG
dans cet exemple, mais le jeton complet (par exemple, EUBBIacA
...32JKOuGh
ci-dessus) doit être utilisé à la place.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default"
Cela renverra un blob XML non mis en forme :
<?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>
Il existe des outils intéressants pour mettre en forme cette sortie et la rendre plus lisible par l'humain, y compris tidy. Le moyen le plus simple d'utiliser tidy consiste à rediriger la sortie de la commande curl vers tidy, comme suit :
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default" | tidy -xml -indent -quiet
Le flux obtenu est beaucoup plus lisible, comme celui-ci :
<?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>
Les entrées individuelles peuvent être récupérées de la même manière en fournissant l'URL de l'entrée, au lieu d'une URL de flux.
Mettre à jour des entrées
Les entrées des API Google Data sont mises à jour en envoyant une requête HTTP PUT
à l'URL de modification avec une nouvelle copie du code XML de l'entrée dans le corps de la requête.
- Récupérer l'entrée à l'aide de la valeur d'URL
atom:link/@rel='self'
- Modifiez l'entrée en local pour apporter les modifications nécessaires.
PUT
l'entrée au serveur, en utilisant la valeur d'URLatom:link/@rel='edit'
.
1. Récupérer l'entrée
L'entrée peut être récupérée à l'aide de l'une des deux URL mises en gras dans le bloc de flux ci-dessus. L'URL requise est la valeur href
de l'élément link
avec un rel='self'
.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593"
2. Mettre à jour l'entrée localement
Une fois l'entrée récupérée, vous devez la modifier à l'aide d'un éditeur de texte ou d'une application locale pour apporter les modifications nécessaires. Dans la commande ci-dessus permettant de récupérer une entrée, nous n'avons pas redirigé les résultats vers tidy
comme dans les exemples précédents. Le résultat est un fichier XML qui représente les mêmes données, mais dont la mise en forme est différente de celle de la version transférée vers tidy
. Pour modifier manuellement une entrée, l'utilisation de tidy
peut souvent faciliter l'utilisation du fichier XML.
Remarque : N'oubliez pas d'inclure toutes les définitions d'espace de noms XML utilisées comme attributs pour atom:entry
lorsque vous publiez votre nouvelle entrée. Si vous les omettez, des exceptions d'analyse se produiront. De plus, tidy
remplacera les espaces entre les définitions de l'espace de noms par des caractères de nouvelle ligne. Bien qu'il s'agisse d'un code XML valide, les services de données Google ne l'acceptent pas pour le moment. Si vous utilisez tidy
, veillez à ajouter des espaces supplémentaires entre ces attributs dans l'élément entry
.
3. Mettre à jour l'entrée sur le serveur
À l'aide de l'URL edit
, vous devez PUT
une copie de l'entrée au service à l'aide de cURL. Un en-tête doit être ajouté pour indiquer le type de contenu envoyé au serveur. L'extrait suivant suppose que le fichier contenant l'entrée modifiée est enregistré dans 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"
Créer des entrées
Les entrées des API Google Data sont créées en effectuant une requête HTTP POST
vers l'URL du post avec une nouvelle entrée. Le atom:id
est attribué par le serveur. Il n'est donc pas nécessaire de l'inclure dans les nouvelles entrées. Le moyen le plus simple de créer une entrée consiste à en prendre une ancienne et à la modifier. L'exemple suivant illustre cette opération.
- Récupérez une entrée de modèle à l'aide de
atom:link/@rel='self'
. - Modifiez l'entrée du modèle en local pour supprimer les informations inutiles et apporter les modifications nécessaires.
POST
l'entrée au serveur, en utilisant l'URLpost
pour le flux. Cette valeur se trouve dans le flux récupéré en tant que valeurhref
de l'élémentlink
avec unrel='http://schemas.google.com/g/2005#post'
, ou dans la documentation du service sur http://code.google.com.
1. Récupérer une entrée de modèle
Vous pouvez récupérer une seule entrée à l'aide de la valeur href
d'un élément link
avec un rel='self'
de la même manière qu'une entrée a été récupérée avant d'être mise à jour dans l'exemple ci-dessus.
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 réponse après l'utilisation de tidy
ressemblera à ceci :
<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. Modifier l'entrée du modèle
Nous souhaitons créer un album intitulé "Curling au Canada" avec des photos de notre dernier match de curling. Google Data vous permet de supprimer les éléments Atom pour lesquels le serveur fournit des valeurs. Pour créer cette entrée de modèle simple, nous allons supprimer les éléments atom:id
, atom:published
, atom:updated
, atom:author
et les différents éléments atom:link
du flux. Cela nous donnera une entrée de modèle simplifiée. L'entrée doit ensuite être modifiée pour représenter le nouvel album que nous créons :
<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>
Remarque : N'oubliez pas d'inclure toutes les définitions d'espace de noms XML utilisées comme attributs pour atom:entry
lorsque vous publiez votre nouvelle entrée. Si vous les omettez, des exceptions d'analyse se produiront. De plus, tidy
remplacera les espaces entre les définitions de l'espace de noms par des caractères de nouvelle ligne. Bien qu'il s'agisse d'un code XML valide, les services de données Google ne l'acceptent pas pour le moment. Si vous utilisez tidy
, veillez à ajouter des espaces supplémentaires entre ces attributs dans l'élément entry
.
3. Publier la nouvelle entrée sur le serveur
La commande curl
permettant de publier une nouvelle entrée sur le serveur est très semblable à celle permettant de mettre à jour une entrée existante, à l'exception de 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
Si le post a réussi, le résultat XML est une copie de l'entrée qui vient d'être créée. Cette entrée inclura les éléments générés par le serveur au moment de sa création, y compris les valeurs des éléments atom:id
, atom:published
, atom:updated
et atom:link
. Les valeurs link
obtenues peuvent être utilisées pour modifier ou supprimer l'entrée, à condition qu'aucune autre modification ne soit apportée entre-temps.
Supprimer des entrées
La suppression d'entrées est très semblable à la mise à jour d'entrées, sauf qu'une méthode HTTP DELETE
est utilisée au lieu d'une méthode HTTP PUT
et qu'aucune donnée n'est requise. Comme pour la requête de mise à jour, l'URL edit
est utilisée comme cible de la requête HTTP.
curl --silent --request DELETE --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
Importer des objets multimédias
Une fonctionnalité importante des API Picasa Web Albums Data et Documents List Data est la possibilité d'importer des objets binaires. cURL peut facilement importer des données binaires et un en-tête de slug. Toutefois, l'API Data List Documents nécessite actuellement de publier le fichier XML avec les données binaires en tant que message MIME multipart. La création du message multipartie ne fait pas partie de cet article.
L'exemple ci-dessous montre comment importer une photo nommée sweeping_the_rock.png
dans un album Web Picasa intitulé "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
Autres outils de ligne de commande
Certains développeurs préfèrent apprendre ou déboguer à l'aide d'autres outils de ligne de commande.
Voici quelques outils populaires :
- telnet, openssl sont utilisés pour établir des connexions de socket brutes (en texte brut et basées sur SSL, respectivement) aux serveurs Web et peuvent être utilisés pour interagir avec les services de données Google. Notez que tous les services de données Google ne sont pas compatibles avec SSL. Voici comment ouvrir les connexions :
telnet picasaweb.google.com 80
(API Picasa Albums Web Data)openssl s_client -connect www.google.com:443
(API Google Calendar Data et autres services sur www.google.com)
Lorsque vous envoyez des données HTTP brutes, sachez que les opérationsPOST /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
etPUT
nécessitent de calculer la valeur d'un en-têteContent-Length
. Vous pouvez utiliser l'outil UNIXwc
pour calculer cette valeur. Placez tout le contenu du corps HTTP dans un fichier texte tel quetemplate_entry.xml
(exemple utilisé ci-dessus) et exécutezwc -c template_entry.xml
. Il est souvent difficile de déboguer si vous utilisez accidentellement une valeur incorrecte pour l'en-têteContent-Length
. - wget est généralement utilisé pour télécharger des données d'un serveur Web vers un fichier local. Toutefois,
wget
propose de nombreuses options qui lui permettent d'effectuer tous les types de requêtes nécessaires pour interagir avec les services de données Google. Voici un exemple d'utilisation dewget
pourPOST
une nouvelle entrée d'album dans Picasa Albums Web :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 est un outil permettant d'appliquer des transformations XSL (XSLT) à des documents XML. Elle peut être utilisée pour extraire facilement les bits de données souhaités d'une entrée ou d'un flux XML renvoyés par les API Google Data, ou pour générer des entrées nouvelles ou mises à jour.
Conclusion
Comme vous l'avez vu, cURL et plusieurs autres outils de ligne de commande peuvent être utilisés pour interagir facilement avec les services de données Google à l'aide de XML et HTTP bruts. N'hésitez pas à nous rejoindre sur les forums spécifiques aux API si vous avez des questions sur l'utilisation de ces outils avec votre API Google Data préférée.