Comienza a usar la biblioteca cliente de Java de datos de Google

Stephanie Liu, equipo de API de datos de Google
Septiembre de 2007
  1. Introducción
  2. Cómo instalar dependencias
    1. En Windows
    2. En Mac OS X
    3. En Linux
  3. Instala la biblioteca cliente de datos de Google
  4. Cómo ejecutar muestras
  5. Compila tus propias aplicaciones
  6. Conclusión
  7. Apéndice: Cómo configurar variables del entorno

Introducción

Nunca es fácil comenzar a desarrollar con una API desconocida, por lo que este artículo tiene instrucciones paso a paso sobre cómo descargar e instalar la biblioteca cliente de las API de datos de Google ("GData"). Veré todas las dependencias y configuraré las variables de entorno que necesitará. ¡Combinarás diferentes servicios de GData en un abrir y cerrar de ojos!

¿Usas Eclipse?

Consulta el artículo Codificación en la sombra: Cómo usar Eclipse con las API de datos de Google.

Instala dependencias

La biblioteca cliente de Java para GData tiene las siguientes dependencias externas. En las siguientes secciones, se describe cómo instalar estas dependencias en tu sistema operativo favorito (o el SO en el que te encuentras en el trabajo).

  • JDK (Java Development Kit) versión 1.5+
  • Apache Ant 1.7 y versiones posteriores
  • mail.jar en la API JavaMail de Sun 1.4+
  • Activate.jar en JavaBeansActivationFramework. Esto solo es necesario para las API de medios específicos, incluida la API de datos de listas de documentos, la API de álbumes web de Picasa y la API de datos de YouTube.
  • servlet.jar en la versión 2.3 o posterior de la API de Servlet de Sun. Esto solo es necesario si se ejecutan muestras de código en paquetes "sample.authsub" o "sample.gbase.recipe".

Algunas de las dependencias .jar solo son obligatorias para muestras específicas, pero, a fin de evitar errores de compilación, es mejor obtener todo. Elige el sistema operativo que prefieras para continuar: Windows, Mac OS X o Linux.

Instala la biblioteca cliente de datos de Google

  1. Visita http://code.google.com/p/gdata-java-client/downloads/list.
  2. Descarga la versión más reciente de la biblioteca cliente (gdata-src.java-1.x.x.java.zip) y las muestras (gdata-samples.java-1.x.x.java.zip).
  3. Extrae la fuente de la biblioteca cliente en tu computadora.
  4. Navega a gdata/java/build-src/build.properties y abre el archivo.
  5. Edita las dependencias externas para que apunten a las ubicaciones de los archivos .jar en tu máquina local.
  6. Nota: En Windows, asegúrate de usar las barras invertidas. Por ejemplo:

    servlet.jar=C:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\lib\\servlet-api.jar

Ejecutar muestras

Todas las muestras disponibles se encuentran en gdata/java/sample, en el archivo gdata-samples.java-1.x.x.java.zip. El archivo gdata/java/build-samples/build.properties contiene todos los valores de entrada para las muestras incluidas en la biblioteca. Establece sample.credentials.username y sample.credentials.password en un nombre de usuario y contraseña válidos. Podemos usar Ant para compilar y ejecutar las muestras.

Para comprobar si instalaste todo correctamente, abre un símbolo del sistema, cambia al directorio gdata/java y escribe:

ant -f build-samples.xml sample.calendar.run

Es posible que recibas información o mensajes de advertencia, pero busca el mensaje BUILD SUCCESSFUL al final. Consulta la sección de solución de problemas si no recibes un mensaje de éxito.

Para probar una muestra más interactiva, escribe lo siguiente:

ant -f build-samples.xml sample.spreadsheet.guidemo.run

Para obtener información sobre cómo ejecutar una muestra en particular, ve a gdata/java/build-samples y revisa el archivo de compilación de esa muestra. Busca la sección samples run.

Solución de problemas

Si tu compilación falla con un mensaje de error como el siguiente:

BUILD FAILED
Target 'core.sample.core.util.build' does not exist in this project. It is used from target 'sample.calendar.build'.

Total time: 0 seconds

o un mensaje de error similar sobre un archivo esencial que falta en el proyecto, es posible que estés ejecutando una versión anterior de Ant. Escribe ant -version para asegurarte de que ejecutas la versión 1.7 o posterior. Consulta las instrucciones de dependencia anteriores para obtener la versión más reciente de Ant.

Compila tus propias aplicaciones

La siguiente pregunta es cómo compilar tu propia aplicación. Veré un programa equivalente a "Hello, World!" con el servicio de Calendario para demostrar la funcionalidad básica. Puedes encontrar información más detallada en la guía para desarrolladores de la biblioteca cliente de Java, así como en las guías para desarrolladores de productos individuales.

Crea un archivo llamado CalendarTest.java. Comienza por incluir las siguientes instrucciones de importación.

import com.google.gdata.client.*;
import com.google.gdata.client.calendar.*;
import com.google.gdata.data.*;
import com.google.gdata.data.acl.*;
import com.google.gdata.data.calendar.*;
import com.google.gdata.data.extensions.*;
import com.google.gdata.util.*;

import java.net.*;
import java.io.*;

import sample.util.*;

Este es el programa completo (sin ningún tipo de control de excepciones).

public class CalendarTest {

    public static void main(String[] args) {
        CalendarService myService = new CalendarService("exampleCo-exampleApp-1.0");
        myService.setUserCredentials("root@gmail.com", "pa$$word");

        URL feedUrl = new URL("http://www.google.com/calendar/feeds/default/allcalendars/full");
        CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);

        System.out.println("Your calendars:");
        System.out.println();

        for (int i = 0; i < resultFeed.getEntries().size(); i++) {
          CalendarEntry entry = resultFeed.getEntries().get(i);
          System.out.println("\t" + entry.getTitle().getPlainText());
        }

    }
}

This little program will request all the calendars you own and display all the titles. It's a little longer than the canonical "Hello, World!" example, but it's very simple once we break it down. The first couple of lines creates a service object and sets the user credentials.

CalendarService myService = new CalendarService("exampleCo-exampleApp-1.0");
myService.setUserCredentials("root@gmail.com", "pa$$word");

Luego, se establece la URL del recurso. En este caso, puedes solicitar al usuario autenticado la lista de todos los calendarios.

URL feedUrl = new URL("http://www.google.com/calendar/feeds/default/allcalendars/full");

La línea que aparece a continuación ejecutará el comando GET real en la URL y colocará el feed resultante en un objeto ordenado.

CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);

El bucle for que se muestra a continuación iterará a través de cada entrada e imprimirá el título. Ten en cuenta que el título se almacena como un TextConstruct, por lo que se requiere una llamada de función adicional para obtener el texto sin formato.

for (int i = 0; i < resultFeed.getEntries().size(); i++) {
    CalendarEntry entry = resultFeed.getEntries().get(i);
    System.out.println("\t" + entry.getTitle().getPlainText());
}

Esto fue bastante básico. Veamos otras cosas comunes. En el siguiente fragmento, se muestra cómo crear un objeto y cómo insertarlo. Para nuestro ejemplo, será una nueva entrada para el evento del calendario.

URL postURL = new URL("http://www.google.com/calendar/feeds/root@gmail.com/private/full");
CalendarEventEntry myEvent = new CalendarEventEntry();

//Set the title and description
myEvent.setTitle(new PlainTextConstruct("Pi Day Party"));
myEvent.setContent(new PlainTextConstruct("I am throwing a Pi Day Party!"));

//Create DateTime events and create a When object to hold them, then add
//the When event to the event
DateTime startTime = DateTime.parseDateTime("2007-03-14T15:00:00-08:00");
DateTime endTime = DateTime.parseDateTime("2007-03-14T17:00:00-08:00");
When eventTimes = new When();
eventTimes.setStartTime(startTime);
eventTimes.setEndTime(endTime);
myEvent.addTime(eventTimes);

// POST the request and receive the response:
CalendarEventEntry insertedEntry = myService.insert(postURL, myEvent);

Otra operación común es crear una consulta.

//Create a new query object and set the parameters
Query myQuery = new Query(feedURL);
myQuery.setFullTextQuery("Pi");

//Send the request with the built query URL
CalendarEventFeed myResultsFeed = myService.query(myQuery, CalendarEventFeed.class);

//Take the first match and print the title
if (myResultsFeed.getEntries().size() > 0) {
    CalendarEventEntry firstMatchEntry = new CalendarEventEntry();
    myResultsFeed.getEntries().get(0);
    System.out.println(firstMatchEntry.getTitle().getPlainText());
}

Durante la depuración, otra operación útil es volcar el XML sin procesar. Existe una utilidad útil que puedes usar en la biblioteca. Asegúrate de importar samples.util.*. Luego, vuelque el feed o la entrada.

CommonUtils.dump(resultFeed, System.out);

Para obtener herramientas de depuración aún más detalladas, consulta nuestro artículo Depuración de clientes de la API de datos de Google: explora el tráfico desde el programa para obtener información sobre cómo activar el registro desde la biblioteca cliente.

Esto debería darte una idea de cómo se compilan las apps con la biblioteca cliente. A fin de obtener información más detallada, consulta la sección de conclusión a fin de obtener una lista de las guías para desarrolladores disponibles para cada API de datos de Google.

Conclusión

Esperamos que ya puedas compilar y ejecutar aplicaciones con la biblioteca cliente de Java para GData. No envié ninguno de los IDE populares que puedes usar, pero te recomendamos que busques herramientas populares como Eclipse o NetBeans. Estos son algunos vínculos adicionales que pueden resultarte útiles:

Si tienes alguna pregunta sobre el uso de la biblioteca cliente de Java con cualquier API, puedes informarnos en la página de foros específicos de la API.