Advertencia: Esta página trata sobre las APIs anteriores de Google, las APIs de Google Data, y solo es pertinente para las APIs que se enumeran en el directorio de las APIs de Google Data, muchas de las cuales se reemplazaron por APIs más nuevas. Para obtener información sobre una API nueva específica, consulta su documentación. 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 las APIs de datos de Googleseptiembre de 2007
- Introducción
- Cómo obtener e instalar cURL
- Cómo autenticarse en un servicio de datos de Google
- Cómo recuperar feeds y entradas
- Actualiza entradas
- Cómo crear entradas
- Cómo borrar entradas
- Cómo subir objetos multimedia
- Otras herramientas de línea de comandos
- Conclusión
Introducción
En esencia, las APIs de datos de Google usan feeds y entradas de Atom (XML) como formato de datos y HTTP como protocolo para la transmisión de datos, lo que extiende el protocolo de publicación de Atom. Publicamos varias bibliotecas cliente para facilitar la interacción con las APIs de datos de Google. Sin embargo, siempre puedes usar herramientas de nivel inferior para trabajar con nuestros servicios, y es bastante fácil hacerlo con un poco de orientación.
cURL es una aplicación de línea de comandos para realizar solicitudes con una variedad de protocolos, incluido HTTP. Los desarrolladores suelen usar cURL para probar los servicios de datos de Google, ya que admite la funcionalidad de HTTP necesaria para interactuar con las APIs en un nivel bajo.
cURL solo proporciona compatibilidad para realizar 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 que se utiliza es un requisito previo para trabajar con la aplicación. En este artículo, se mencionan otras herramientas para facilitar estas tareas.
En este artículo, se utilizan ejemplos basados en la API de datos de los Álbumes web de Picasa. Sin embargo, todos estos ejemplos se pueden aplicar fácilmente a otras APIs de datos de Google.
Cómo obtener e instalar cURL
cURL suele estar disponible en la instalación predeterminada de muchas plataformas UNIX/Linux. Prueba a escribir curl
en tu shell favorito para ver si la herramienta está instalada y se encuentra en tu PATH
. Si no tienes instalada la herramienta, visita la página de descarga en el sitio web de cURL para obtener la fuente oficial o un paquete binario aportado por un 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 que, si no compilas desde la fuente, asegúrate de descargar un paquete "binario" en lugar de un paquete "libcurl". Los paquetes habilitados para SSL son necesarios si deseas usar cURL para adquirir tokens de autenticación o acceder a algunos servicios de datos de Google que requieren el uso de SSL para las solicitudes.
Autenticación 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 un token de autenticación de ClientLogin (apps para computadoras o dispositivos móviles) o AuthSub (apps 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 podrían usar con cURL, pero el proceso más avanzado para obtener los tokens está fuera del alcance de este artículo.
Cómo usar ClientLogin
ClientLogin está diseñado para aplicaciones instaladas (para computadoras o dispositivos móviles). Con este método de autenticación, la aplicación que usa las APIs de Google Data controla directamente el nombre de usuario y la contraseña del usuario.
Una solicitud de autenticación para 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 Google Data. Ten en cuenta que los argumentos de datos que se pasan con curl
deben estar codificados en formato URL si contienen caracteres que no son ASCII, que suelen aparecer en los argumentos Email
y Passwd
. Puedes pedirle a curl
que codifique estos argumentos como URL con la marca --data-urlencode
.
Ejemplo de solicitud:
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
Ejemplo de respuesta:
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 información específica sobre los parámetros que se usan 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
. Los nombres de los servicios de otros servicios de Google Data se pueden encontrar en la página de Preguntas frecuentes sobre las APIs de Google Data.
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 convierte en un encabezado HTTP que luego se usa 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 caracteres de nueva línea con caracteres de barra inversa (“\”) que se muestra arriba no funciona en el shell de comandos de Windows, por lo que debes ingresar todo el comando en una sola línea si ejecutas curl
en Windows.
Cómo recuperar feeds y entradas
En las APIs de datos de Google, la recuperación de feeds y entradas se realiza con una solicitud GET
HTTP en una URL, con un conjunto opcional de parámetros de consulta. Dado que realizamos una solicitud GET
, solo se requiere que se pasen el encabezado de autorización y la URL a curl
. En el siguiente ejemplo, se seguirá usando la API de datos de los álbumes web de Picasa para recuperar una lista de los álbumes que pertenecen al usuario autenticado. Ten en cuenta que, en este ejemplo, abreviamos el token de autorización a ABCDEFG
, pero se debe usar el token completo (p. ej., EUBBIacA
…32JKOuGh
del ejemplo anterior) en su lugar.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default"
Se mostrará un BLOB de 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 decentes para formatear este resultado y hacerlo más legible para los humanos, como tidy. La forma más sencilla de usar tidy es canalizar el resultado del comando curl a tidy 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 genera 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 proporcionando la URL de la entrada, en lugar de la URL del feed.
Actualiza entradas
Las entradas de las APIs de datos de Google se actualizan realizando una acción HTTP PUT
en la URL de edición con una copia nueva del XML de la entrada en el cuerpo de la solicitud.
- Recupera la entrada con el valor de URL
atom:link/@rel='self'
. - Actualiza la entrada de forma local para realizar los cambios necesarios.
PUT
la entrada al servidor con el valor de URLatom:link/@rel='edit'
1. Cómo recuperar la entrada
La entrada se puede recuperar con una de las dos URLs que aparecen en negrita en el bloque del 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 un editor de texto o una aplicación local para realizar los cambios necesarios. 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 archivo XML que representa los mismos datos, pero tiene un formato diferente al de la versión canalizada a tidy
. Para editar una entrada de forma manual, usar tidy
suele facilitar el trabajo con el XML.
Nota: Recuerda incluir todas las definiciones de espacio de nombres XML que se usan como atributos para atom:entry
cuando publiques tu entrada nueva. Si se omiten, se generarán excepciones de análisis. Además, tidy
reemplazará los espacios entre las definiciones de espacio de nombres con caracteres de nueva línea. Si bien este es un 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. Actualización de la entrada en el servidor
Con la URL de edit
, debes PUT
una copia de la entrada al servicio con cURL. Se debe agregar un encabezado para indicar 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"
Cómo crear entradas
Las entradas en las APIs de datos de Google se crean con una solicitud HTTP POST
a la URL de publicación con una entrada nueva. El servidor asigna el atom:id
, por lo que no es necesario incluirlo en las entradas nuevas. La forma más sencilla de crear una entrada nueva es tomar una entrada anterior y modificarla. En el siguiente ejemplo, se hará exactamente eso.
- Recupera una entrada de plantilla con
atom:link/@rel='self'
- Modifica la entrada de la plantilla de forma local para quitar la información innecesaria y realizar los cambios necesarios.
POST
la entrada al servidor con la URL depost
para el feed. Este valor se encuentra en el feed recuperado como el valorhref
del elementolink
con unrel='http://schemas.google.com/g/2005#post'
, o bien en la documentación del servicio en http://code.google.com.
1. Recupera 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 en 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
La respuesta, después de usar tidy
, 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 llamado "Curling en Canadá" con fotos de nuestro reciente partido de curling. Los datos de Google te permiten descartar los elementos Atom para los que el servidor proporciona valores, por lo que, para crear esta entrada de plantilla simple, quitaremos los elementos atom:id
, atom:published
, atom:updated
, atom:author
y los diversos elementos atom:link
del feed. Esto nos dará una entrada de plantilla reducida. Luego, se debe modificar la entrada para que represente el nuevo álbum que estamos 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: Recuerda incluir todas las definiciones de espacio de nombres XML que se usan como atributos para atom:entry
cuando publiques tu entrada nueva. Si se omiten, se generarán excepciones de análisis. Además, tidy
reemplazará los espacios entre las definiciones de espacio de nombres por caracteres de nueva línea. Si bien este es un 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. Publicar la entrada nueva en el servidor
El comando curl
para publicar una entrada nueva en el servidor es muy similar al de 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 será una copia de la entrada recién creada. Esta entrada incluirá elementos que el servidor generó en el momento en que se creó la entrada, incluidos los valores de los elementos atom:id
, atom:published
, atom:updated
y atom:link
. Los valores de link
resultantes se pueden usar para editar o borrar la entrada, siempre que no se realicen cambios adicionales en el ínterin.
Cómo borrar 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 es necesario enviar datos. Al igual que en la solicitud de actualización, la URL de 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"
Cómo subir objetos multimedia
Una función importante de la API de datos de Picasa Web Albums y la API de datos de la Lista de documentos es la capacidad de subir objetos binarios. cURL puede subir fácilmente datos binarios y un encabezado slug. Sin embargo, actualmente, la API de datos de Documents List requiere que se publique el XML junto con los datos binarios como un mensaje multiparte MIME. La formación del mensaje de varias partes está fuera del alcance de este artículo.
En el siguiente ejemplo, se muestra cómo subir una imagen llamada sweeping_the_rock.png
a un álbum web de Picasa con el título "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
Otras herramientas de línea de comandos
Algunos desarrolladores prefieren aprender o depurar con otras herramientas de línea de comandos.
Entre las herramientas populares, se incluyen las siguientes:
- telnet y openssl se usan para establecer conexiones de sockets sin procesar (basadas en texto sin formato y SSL, respectivamente) a servidores web, y se pueden usar para interactuar con los servicios de datos de Google. Ten en cuenta que es posible que no todos los servicios de datos de Google admitan SSL. Sigue estos pasos para abrir las conexiones:
telnet picasaweb.google.com 80
(API de datos de los Álbumes web de Picasa)openssl s_client -connect www.google.com:443
(API de datos de Google Calendar y otros servicios en www.google.com)
Cuando envíes datos HTTP sin procesar, ten en cuenta que las operacionesPOST /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
yPUT
requerirán que se calcule el 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 usado anteriormente), y ejecutawc -c template_entry.xml
. A menudo, es difícil depurar si usas accidentalmente un valor incorrecto para el encabezadoContent-Length
. - Por lo general, wget se usa para descargar datos de un servidor web a un archivo local. Sin embargo,
wget
tiene muchas opciones que lo hacen capaz de realizar todos los tipos diferentes de solicitudes necesarias para interactuar con los servicios de datos de Google. A continuación, se muestra un ejemplo de cómo usarwget
paraPOST
una nueva entrada de álbum en Á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 fragmentos de datos deseados de una entrada o un feed XML que devuelven las APIs de Google Data, o para generar entradas nuevas o actualizadas.
Conclusión
Como ya viste, cURL y otras herramientas de línea de comandos se pueden usar para interactuar fácilmente con los servicios de datos de Google a través de XML y HTTP sin procesar. Únete a los foros específicos de la API si tienes alguna pregunta sobre el uso de estas herramientas con tu API de datos de Google favorita.