Advertencia: Esta página trata sobre las API anteriores de Google, las API de datos de Google, y solo es relevante para las API que aparecen en el directorio de las API de datos de Google, muchas de las cuales se reemplazaron con API más nuevas. Para obtener información sobre una API nueva específica, consulta la documentación de la API nueva. Para obtener información sobre cómo autorizar solicitudes con una API más reciente, consulta Autenticación y autorización de cuentas de Google.
Ryan Boyd, equipo de API de datos de GoogleSeptiembre de 2007
- Introducción
- Obtén e instala cURL
- Autenticación en un servicio de datos de Google
- Cómo recuperar feeds y entradas
- Actualiza entradas
- Crea entradas
- Cómo borrar entradas
- Sube objetos multimedia
- Otras herramientas de línea de comandos
- Conclusión
Introducción
En esencia, las API de datos de Google usan feeds Atom y entradas (XML) como formato de datos y HTTP como protocolo para la transmisión de datos, lo que extiende el Protocolo de publicación Atom. Publicamos varias bibliotecas cliente para facilitar la interacción con las API de datos de Google. Sin embargo, puede usar las herramientas de nivel inferior para trabajar con nuestros servicios. Puede hacerlo con un poco de orientación.
cURL es una aplicación de línea de comandos para realizar solicitudes mediante una variedad de protocolos, incluido HTTP. A menudo, los programadores utilizan cURL, que admite la funcionalidad de HTTP necesaria para interactuar con las API en un nivel bajo.
cURL solo proporciona asistencia para la comunicación HTTP, por lo que el conocimiento del protocolo de datos de Google, el protocolo específico del servicio y el formato de datos XML es un requisito previo para trabajar con la aplicación. En este artículo, se mencionan otras herramientas que facilitan estas tareas.
Este artículo utiliza ejemplos basados en la API de datos de Álbumes web de Picasa. Sin embargo, todos estos ejemplos se pueden aplicar fácilmente a otras API de datos de Google.
Obtén e instala cURL
cURL está generalmente disponible en una instalación predeterminada de muchas plataformas UNIX/Linux. Intenta escribir curl
en tu shell favorito para ver si la herramienta está instalada y en tu PATH
. Si no tienes instalada la herramienta, visita la página de descargas en el sitio web de cURL para obtener la fuente oficial o un paquete binario aportado por el usuario. Ten en cuenta que la herramienta de línea de comandos usa la biblioteca libcurl
, que se puede ofrecer como un paquete de descarga independiente. Por lo tanto, si no compilas desde la fuente, asegúrate de descargar un paquete "binario" en lugar de un paquete "libcurl". Se requieren paquetes habilitados para SSL si deseas usar cURL a fin de adquirir tokens de autenticación o acceder a algunos servicios de datos de Google que requieren usar SSL para las solicitudes.
Autentica en un servicio de datos de Google
Las solicitudes de datos de Google autenticadas se realizan agregando un encabezado HTTP a la solicitud que contiene el token de autenticación ClientLogin (aplicaciones para dispositivos móviles/computadoras de escritorio) o el token de autenticación AuthSub (aplicaciones web). Para realizar pruebas con cURL, ClientLogin es el método más sencillo y se documenta a continuación. Los encabezados de autenticación de AuthSub se pueden usar con cURL, pero el proceso más avanzado de obtener los tokens está fuera del alcance de este artículo.
Usar ClientLogin
ClientLogin está diseñado para aplicaciones instaladas (computadoras de escritorio y celulares). Con este método de autenticación, la aplicación que usa las API de datos de Google maneja directamente el nombre de usuario y la contraseña del usuario.
Una solicitud de autenticación de ClientLogin toma un nombre de usuario, una contraseña y un nombre de servicio como variables de publicación de formulario. Estas variables se pasan como los argumentos Email
, Passwd
y service
, respectivamente. Esta solicitud genera una respuesta con varios tokens, uno de los cuales se puede usar para realizar solicitudes al servicio de datos de Google. Ten en cuenta que los argumentos de datos que se pasan con curl
deben estar codificados para URL si contienen caracteres que no son ASCII, que suelen aparecer en los argumentos Email
y Passwd
. Puedes pedirle a curl
que codifique en URL estos argumentos mediante la marca --data-urlencode
.
Solicitud de ejemplo:
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
Respuesta de ejemplo:
SID=DQAAAHYBADCv2pSv7nflacDNwz3zEDUGtrSvNVDcpkSfddi77b3U5sEaHmP8YLWhmA36F9rk85mL8J5dqo4apn0T1vKz0fPGI9Xtnuet6cuE2ZzYvrNIwbSC_HjTqF4zudNQnnlDuD2wqZT-g1qXI8KhGAQZV4NexHZoQPlabTsGuRZeIBxj1A LSID=EUBBBIaBADCl-kNxvRVmcQghpt3cqSMfEooKR9flLOUZqwgP9OrZS83gse-KSdTNeXhxsET7FYenDhceP9lIPOmesH-t9qh-AWUHjjMdZEbUNeF9mWyzln6Z-FajaiG-cVFkqW0ZJ8ZbnCP30xXj6xFK6QxaAcqy_9Pej8jhEnxS9E61ftQGPg Auth=EUBBIacAAADK-kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxsET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfagZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh
Consulta la documentación de ClientLogin para obtener la información específica sobre los parámetros utilizados en la solicitud anterior. En este ejemplo, el servicio que usamos es la API de datos de Álbumes web de Picasa. El nombre del servicio (service
) es lh2
. Puedes encontrar los nombres de otros servicios de datos de Google en la página Preguntas frecuentes sobre las API de datos de Google.
El valor del token Auth
en la respuesta anterior es el único valor necesario para la autenticación en los servicios de datos de Google. El valor de este token se forma en una cabecera HTTP que luego se utiliza para cada solicitud a un servicio de datos de Google.
curl --silent --header "Authorization: GoogleLogin auth=EUBBIacAAADK\ -kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxs\ ET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfag\ ZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh" \ "http://picasaweb.google.com/data/feed/api/user/default"
Nota: El método para escapar los caracteres de salto de línea con barras invertidas ('\') anteriores no funciona en la shell de comando de Windows, por lo que debes ingresar el comando completo en una línea si ejecutas curl
en Windows.
Cómo recuperar feeds y entradas
En las API de datos de Google, la recuperación de feeds y de entradas se realiza mediante la ejecución de un GET
de HTTP en una URL con un conjunto opcional de parámetros de consulta. Debido a que estamos realizando una solicitud GET
, solo el encabezado de autenticación y la URL deben pasarse a curl
. El siguiente ejemplo continúa usando la API de datos de Álbumes web de Picasa y se usa para recuperar una lista de álbumes que pertenecen al usuario autenticado. Ten en cuenta que acortamos el token de autenticación a ABCDEFG
en este ejemplo, pero el token completo (p.ej., EUBBIacA
...32JKOuGh
anterior) debe usarse en su lugar.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default"
Esto mostrará un BLOB XML sin formato:
<?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>
Existen algunas herramientas adecuadas para aplicar formato a este resultado a fin de que sea más legible, incluido el uso de tidy. La forma más fácil de usar el orden es ordenar la salida del comando curl para que se ordene de la siguiente manera:
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default" | tidy -xml -indent -quiet
Esto da como resultado un feed mucho más legible, como el siguiente:
<?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>
Las entradas individuales se pueden recuperar de la misma manera si se proporciona la URL de la entrada, en lugar de la URL de un feed.
Actualizando entradas
Para actualizar las entradas en las API de datos de Google, se realiza una HTTP PUT
en la URL de edición con una nueva copia del archivo XML de la entrada en el cuerpo de la solicitud.
- Recupera la entrada con el valor de URL
atom:link/@rel='self'
- Actualice la entrada de forma local para realizar los cambios necesarios
PUT
la entrada de nuevo al servidor, con el valor de URLatom:link/@rel='edit'
1. Recupera la entrada
La entrada se puede recuperar usando una de las dos URL en negrita en el bloque de feed anterior. La URL necesaria es el valor de href
para el 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. Actualiza la entrada de forma local
Después de recuperar la entrada, esta debe actualizarse con una aplicación o un editor de texto local para realizar los cambios necesarios en la entrada. En el comando anterior para recuperar una entrada, no canalizamos los resultados a tidy
, como lo hicimos en los ejemplos anteriores. El resultado es un XML que representa los mismos datos, pero que tiene un formato diferente al de la versión canalizada a tidy
. Para editar una entrada manualmente, usar tidy
a menudo puede facilitar el trabajo con el XML.
Nota: Recuerda incluir todas las definiciones de espacio de nombres XML que se usan como atributos de atom:entry
cuando publiques la entrada nueva. Omitirlos hará que se analicen las excepciones. Además, tidy
reemplazará los espacios entre las definiciones de espacios de nombres con caracteres de saltos de línea. Si bien este valor es un formato XML válido, los servicios de datos de Google no lo aceptan en este momento. Si usas tidy
, asegúrate de agregar espacios adicionales entre estos atributos en el elemento entry
.
3. Actualiza la entrada en el servidor
Con la URL edit
, debes PUT
una copia de la entrada al servicio mediante cURL. Se debe agregar un encabezado que indique el tipo de contenido que se envía al servidor. En el siguiente fragmento, se supone que el archivo con la entrada actualizada se guarda en 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"
Crea entradas
Las entradas en las API de datos de Google se crean mediante una HTTP POST
en la URL de la entrada con una entrada nueva. El servidor asigna el atom:id
, por lo que no es necesario incluirlo en entradas nuevas. La manera más fácil de crear una nueva entrada es tomar una anterior y modificarla. En el siguiente ejemplo, se hace justamente eso.
- Recupera una entrada de una plantilla con
atom:link/@rel='self'
. - Modifique la entrada de la plantilla localmente para quitar la información innecesaria y realizar los cambios necesarios.
- Usa
POST
para ingresar la entrada al servidor mediante la URLpost
del feed. Puedes encontrarlo en el feed recuperado como el valorhref
para el elementolink
con unrel='http://schemas.google.com/g/2005#post'
, o en la documentación del servicio en http://code.google.com.
1. Recuperar una entrada de plantilla
Se puede recuperar una sola entrada con el valor href
de un elemento link
con un rel='self'
de la misma manera que se recuperó una entrada antes de actualizarla en el ejemplo anterior.
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
Después de usar tidy
, la respuesta se verá de la siguiente manera:
<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. Modifica la entrada de la plantilla
Queremos crear un álbum que se llame "Curling in Canada" (Curling in Canada) con fotos de nuestro partido reciente de curling. Los datos de Google te permiten descartar elementos Atom para los que el servidor proporciona valores. Por lo tanto, para crear esta simple entrada de plantilla, quitaremos atom:id
, atom:published
, atom:updated
, atom:author
y los diversos elementos atom:link
del feed. Esto nos dará una entrada de plantilla simple. Luego, la entrada debe modificarse para representar el álbum nuevo que crearemos:
<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: Recuerda incluir todas las definiciones de espacio de nombres XML que se usan como atributos de atom:entry
cuando publiques la entrada nueva. Omitirlos hará que se analicen las excepciones. Además, tidy
reemplazará los espacios entre las definiciones de espacios de nombres y los reemplazará por caracteres de saltos de línea. Si bien este valor es un formato XML válido, los servicios de datos de Google no lo aceptan en este momento. Si usas tidy
, asegúrate de agregar espacios adicionales entre estos atributos en el elemento entry
.
3. Publica la entrada nueva en el servidor
El comando curl
para publicar una entrada nueva en el servidor es muy similar a actualizar una entrada existente, excepto que la URL es diferente:
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 la publicación se realizó correctamente, el resultado XML resultante será una copia de la entrada recién creada. Esta entrada incluirá los elementos que el servidor generó en el momento de la creación, incluidos los valores para los elementos atom:id
, atom:published
, atom:updated
y atom:link
. Los valores link
resultantes se pueden usar para editar o borrar la entrada, siempre que no se realicen cambios adicionales mientras tanto.
Borra entradas
Borrar entradas es muy similar a actualizar entradas, excepto que se usa un método HTTP DELETE
en lugar de un HTTP PUT
y no se necesitan datos para enviar. Al igual que la solicitud de actualización, la URL edit
se usa como destino de la solicitud HTTP.
curl --silent --request DELETE --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
Sube objetos multimedia
Una función importante de la API de datos de Álbumes web de Picasa y de la lista de documentos es la capacidad de subir objetos binarios. cURL puede lograr que se suban fácilmente datos binarios y un encabezado de slug. Sin embargo, la API de datos de la lista de documentos actualmente requiere la publicación del XML junto con los datos binarios como un mensaje multiparte MIME. La creación de un mensaje multiparte está fuera del alcance de este artículo.
El siguiente ejemplo muestra cómo subir una imagen llamada sweeping_the_rock.png
a un álbum web de Picasa con el título "Barrer la roca":
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
Otras herramientas de línea de comandos
Algunos desarrolladores prefieren aprender o depurar mediante otras herramientas de línea de comandos.
Entre las herramientas populares, se incluyen las siguientes:
- telnet y openssl se usan para realizar conexiones de socket sin procesar (texto sin formato y basado en ssl, respectivamente) a servidores web, y se pueden usar para interactuar con los servicios de datos de Google. Ten en cuenta que no todos los servicios de datos de Google admiten SSL. A continuación, se muestra cómo abrir las conexiones:
telnet picasaweb.google.com 80
(API de datos de Álbumes web de Picasa)openssl s_client -connect www.google.com:443
(API de datos del Calendario de Google y otros servicios en www.google.com)
POST /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>
Cuando envíes datos HTTP sin procesar, ten en cuenta que las operacionesPOST
yPUT
requerirán el cálculo del valor de un encabezadoContent-Length
. Puedes usar la herramientawc
de UNIX para calcular este valor. Coloca todo el contenido del cuerpo HTTP en un archivo de texto, comotemplate_entry.xml
(ejemplo anterior) y ejecutawc -c template_entry.xml
. A menudo, es difícil depurar si usas un valor incorrecto para el encabezadoContent-Length
por accidente. - Por lo general, wget se usa para descargar datos de un servidor web en un archivo local. Sin embargo,
wget
tiene muchas opciones que permiten realizar los diferentes tipos de solicitudes necesarias para interactuar con los servicios de datos de Google. Este es un ejemplo de cómo usarwget
paraPOST
una entrada de álbum nueva de Álbumes web de Picasa: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 es una herramienta para aplicar transformaciones XSL (XSLT) a documentos XML. Se puede usar para extraer fácilmente los bits de datos que desees de una entrada XML o de un feed que muestran las API de datos de Google, o para generar entradas nuevas o actualizadas.
Conclusión
Como has visto, cURL y muchas otras herramientas de línea de comandos se pueden usar para interactuar fácilmente con los servicios de datos de Google usando XML y HTTP sin procesar. Únete a nosotros en los foros específicos de la API si tienes dudas sobre cómo utilizar estas herramientas con tu API de datos de Google favorita.