Erste Schritte mit der Google Data Java-Clientbibliothek

Stephanie Liu, Google Data APIs Team
September 2007
  1. Einführung
  2. Abhängigkeiten installieren
    1. Unter Windows
    2. Unter Mac OS X
    3. Unter Linux
  3. Google Data-Clientbibliothek installieren
  4. Beispiele ausführen
  5. Eigene Anwendungen erstellen
  6. Schlusswort
  7. Anhang: Umgebungsvariablen festlegen

Einführung

Der Einstieg in die Entwicklung mit einer unbekannten API ist nie einfach. In diesem Artikel finden Sie daher eine Schritt-für-Schritt-Anleitung zum Herunterladen und Installieren der Java-Clientbibliothek für Google Data APIs („GData“). Ich zeige Ihnen, wie Sie alle erforderlichen Abhängigkeiten abrufen und die erforderlichen Umgebungsvariablen festlegen. Sie werden in kürzester Zeit verschiedene GData-Dienste kombinieren.

Sie verwenden Eclipse?

Weitere Informationen finden Sie im Artikel Coding in the Shade: Using Eclipse with Google Data APIs.

Abhängigkeiten installieren

Die GData Java Client Library hat die folgenden externen Abhängigkeiten. In den folgenden Abschnitten wird beschrieben, wie Sie diese Abhängigkeiten auf Ihrem bevorzugten Betriebssystem (oder dem Betriebssystem, das Sie bei der Arbeit verwenden müssen) installieren.

  • JDK (Java Development Kit) Version 1.5 oder höher
  • Apache Ant-Version 1.7 oder höher
  • mail.jar in Sun's JavaMail API 1.4+
  • activation.jar im JavaBeansActivationFramework von Sun. Dies ist nur für medienspezifische APIs erforderlich, darunter die Document List Data API, die Picasa Web Album API und die YouTube Data API.
  • servlet.jar in Sun's Servlet API Version 2.3+. Dies ist nur erforderlich, wenn Sie Codebeispiele in den Paketen „sample.authsub“ oder „sample.gbase.recipe“ ausführen.

Einige der .jar-Abhängigkeiten sind nur für bestimmte Beispiele erforderlich. Um Build-Fehler zu vermeiden, ist es jedoch am besten, alles herunterzuladen. Wählen Sie das gewünschte Betriebssystem aus, um fortzufahren: Windows, Mac OS X oder Linux.

Google Data Client Library installieren

  1. Rufen Sie http://code.google.com/p/gdata-java-client/downloads/list auf.
  2. Laden Sie die aktuelle Version der Clientbibliothek (gdata-src.java-1.x.x.java.zip) und der Beispiele (gdata-samples.java-1.x.x.java.zip) herunter.
  3. Extrahieren Sie die Quelle der Clientbibliothek auf Ihren Computer.
  4. Rufen Sie gdata/java/build-src/build.properties auf und öffnen Sie die Datei.
  5. Bearbeiten Sie die externen Abhängigkeiten so, dass sie auf die Speicherorte der .jar-Dateien auf Ihrem lokalen Computer verweisen.
  6. Hinweis:Unter Windows müssen Sie die Backslashes mit einem Escapezeichen versehen. Beispiel:

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

Beispiele ausführen

Alle verfügbaren Beispiele befinden sich im Archiv gdata-samples.java-1.x.x.java.zip unter gdata/java/sample. Die Datei gdata/java/build-samples/build.properties enthält alle Eingabewerte für die in der Bibliothek enthaltenen Stichproben. Legen Sie für sample.credentials.username und sample.credentials.password einen gültigen Nutzernamen und ein gültiges Passwort fest. Wir können Ant verwenden, um die Beispiele zu erstellen und auszuführen.

Testen Sie, ob Sie alles richtig installiert haben. Öffnen Sie dazu eine Eingabeaufforderung, wechseln Sie in das Verzeichnis gdata/java und geben Sie Folgendes ein:

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

Möglicherweise erhalten Sie einige Informations- oder Warnmeldungen. Achten Sie aber einfach auf die Meldung BUILD SUCCESSFUL am Ende. Wenn Sie keine Erfolgsmeldung erhalten, lesen Sie den Abschnitt zur Fehlerbehebung.

Probieren Sie ein interaktiveres Beispiel aus, indem Sie Folgendes eingeben:

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

Informationen zum Ausführen eines bestimmten Beispiels finden Sie unter gdata/java/build-samples in der Build-Datei für dieses Beispiel. Suchen Sie nach dem Abschnitt samples run.

Fehlerbehebung

Wenn Ihr Build mit einer Fehlermeldung wie

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

oder eine ähnliche Fehlermeldung erhalten, dass eine wichtige Datei im Projekt fehlt, verwenden Sie möglicherweise eine ältere Version von Ant. Geben Sie ant -version ein, um zu prüfen, ob Sie Version 1.7 oder höher verwenden. Folgen Sie der Anleitung zu Abhängigkeiten oben, um die aktuelle Version von Ant zu erhalten.

Eigene Anwendungen erstellen

Die nächste Frage ist, wie Sie Ihre eigene Anwendung erstellen. Ich werde ein Programm durchgehen, das dem „Hello, World!“ entspricht und den Kalenderdienst verwendet, um grundlegende Funktionen zu demonstrieren. Ausführlichere Informationen finden Sie im Entwicklerhandbuch der Java-Clientbibliothek sowie in den Entwicklerhandbüchern der einzelnen Produkte.

Erstellen Sie eine Datei namens „CalendarTest.java“. Fügen Sie zuerst die folgenden Importanweisungen ein.

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.*;

Hier ist das gesamte Programm (ohne Ausnahmebehandlung).

public class CalendarTest {

    public static void main(String[] args) {
        CalendarService myService = new CalendarService("exampleCo-exampleApp-1.0");
        myService.setUserCredentials("[email protected]", "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("[email protected]", "pa$$word");

Anschließend wird die URL der Ressource festgelegt. In diesem Fall können Sie hier die Liste aller Kalender des authentifizierten Nutzers anfordern.

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

In der Zeile unten wird der eigentliche GET-Befehl für die URL ausgeführt und der resultierende Feed in ein übersichtliches Objekt eingefügt.

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

Die for-Schleife unten durchläuft jeden Eintrag und gibt den Titel aus. Der Titel wird als TextConstruct gespeichert. Daher ist ein zusätzlicher Funktionsaufruf erforderlich, um den Nur-Text zu erhalten.

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

Das war ziemlich einfach. Sehen wir uns einige andere häufige Dinge an. Im folgenden Snippet sehen Sie, wie Sie ein Objekt erstellen und einfügen. In unserem Beispiel ist es ein neuer Kalendertermin.

URL postURL = new URL("http://www.google.com/calendar/feeds/[email protected]/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);

Eine weitere häufige Operation ist das Erstellen einer Abfrage.

//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());
}

Beim Debuggen ist es auch hilfreich, das Roh-XML auszugeben. Dafür gibt es ein praktisches Tool in der Bibliothek. Prüfen Sie, ob samples.util.* importiert wurde. Entfernen Sie dann den Feed oder Eintrag.

CommonUtils.dump(resultFeed, System.out);

Noch detailliertere Debugging-Tools finden Sie in unserem Artikel Debugging Google Data API Clients: Exploring Traffic from Within your Program. Dort wird beschrieben, wie Sie das Logging in der Clientbibliothek aktivieren.

So erhalten Sie einen Eindruck davon, wie es ist, Apps mit der Clientbibliothek zu entwickeln. Weitere Informationen finden Sie im Abschnitt „Zusammenfassung“. Dort finden Sie eine Liste der verfügbaren Entwicklerleitfäden für jede Google Data API.

Fazit

Hoffentlich können Sie jetzt Anwendungen mit der GData Java-Clientbibliothek erstellen und ausführen. Ich habe keine der beliebten IDEs behandelt, die Sie verwenden können. Sie sollten sich jedoch beliebte Tools wie Eclipse oder NetBeans ansehen. Hier finden Sie einige zusätzliche Links, die hilfreich sein könnten:

Wenn Sie Fragen zur Verwendung der Java-Clientbibliothek mit einer API haben, können Sie uns dies in den API-spezifischen Foren mitteilen.