Google 데이터 자바 클라이언트 라이브러리 시작하기

Stephanie Liu, Google 데이터 API팀
2007년 9월
  1. 소개
  2. 종속 항목 설치
    1. Windows
    2. Mac OS X
    3. Linux
  3. Google 데이터 클라이언트 라이브러리 설치
  4. 샘플 실행
  5. 나만의 애플리케이션 빌드
  6. 결론
  7. 부록: 환경 변수 설정

소개

낯선 API로 개발을 시작하기는 쉽지 않으므로 이 도움말에서는 Google 데이터 API('GData') 자바 클라이언트 라이브러리를 다운로드하고 설치하는 방법에 대한 단계별 안내를 제공합니다. 모든 종속 항목을 가져오고 필요한 환경 변수를 설정하는 과정을 살펴보겠습니다. 다양한 GData 서비스를 신속하게 조합할 수 있습니다.

Eclipse를 사용하시나요?

셰이딩으로 코딩하기: Google Data API에 Eclipse 사용 도움말을 확인하세요.

종속 항목 설치

GData 자바 클라이언트 라이브러리에는 다음과 같은 외부 종속 항목이 있습니다. 다음 섹션에서는 원하는 운영체제 (또는 직장에서 사용하는 OS)에 이러한 종속 항목을 설치하는 방법을 설명합니다.

  • JDK (자바 개발 키트) 버전 1.5 이상
  • Apache Ant 버전 1.7 이상
  • Sun의 JavaMail API 1.4 이상에서 mail.jar
  • Sun의 JavaBeansActivateFramework에서 activate.jar Document List Data API, Picasa Web Album API, YouTube Data API를 포함한 미디어 관련 API에만 필요합니다.
  • Sun's Servlet API 버전 2.3 이상에서 kube.jar을 다운로드합니다. 이는 'sample.authsub' 또는 'sample.gbase.recipe' 패키지에서 코드 샘플을 실행하는 경우에만 필요합니다.

일부 .jar 종속 항목은 특정 샘플에만 필요하지만 빌드 오류를 방지하려면 모든 것을 가져오는 것이 가장 좋습니다. Windows, Mac OS X, Linux 중에서 원하는 운영체제를 선택합니다.

Google 데이터 클라이언트 라이브러리 설치

  1. http://code.google.com/p/gdata-java-client/downloads/list로 이동합니다.
  2. 최신 버전의 클라이언트 라이브러리(gdata-src.java-1.x.x.java.zip)와 샘플(gdata-samples.java-1.x.x.java.zip)을 다운로드합니다.
  3. 클라이언트 라이브러리 소스를 컴퓨터에 추출합니다.
  4. gdata/java/build-src/build.properties로 이동하여 파일을 엽니다.
  5. 로컬 종속 항목의 .jar 파일 위치를 가리키도록 외부 종속 항목을 수정합니다.
  6. 참고: Windows에서는 백슬래시를 이스케이프 처리해야 합니다. 예를 들면 다음과 같습니다.

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

샘플 실행

사용 가능한 모든 샘플은 gdata-samples.java-1.x.x.java.zip 보관 파일의 gdata/java/sample 아래에 있습니다. gdata/java/build-samples/build.properties 파일에는 라이브러리에 포함된 샘플의 모든 입력 값이 포함되어 있습니다. sample.credentials.usernamesample.credentials.password를 유효한 사용자 이름과 비밀번호로 설정합니다. Ant를 사용하여 샘플을 빌드하고 실행할 수 있습니다.

명령 프롬프트를 열고 gdata/java 디렉터리로 변경한 후 다음을 입력하여 모든 것이 제대로 설치되었는지 테스트합니다.

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

정보나 경고 메시지를 받을 수 있지만 끝에 있는 BUILD SUCCESSFUL 메시지를 확인하세요. 성공 메시지가 표시되지 않으면 문제 해결 섹션을 참고하세요.

다음을 입력하여 더 대화형 샘플을 사용해 보세요.

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

특정 샘플을 실행하는 방법을 알아보려면 gdata/java/build-samples로 이동하여 샘플의 빌드 파일을 확인하세요. samples run 섹션을 찾습니다.

문제 해결

빌드가 실패하고 다음과 같은 오류 메시지가 표시됩니다.

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

또는 프로젝트에서 누락된 필수 파일에 관한 유사한 오류 메시지가 표시된다면 이전 버전의 Ant를 실행 중일 수도 있습니다. ant -version를 입력하여 1.7 이상을 실행 중인지 확인합니다. 최신 버전의 Ant를 다운로드하려면 위의 종속 항목 안내를 참고하세요.

자체 애플리케이션 빌드

다음 질문은 자체 애플리케이션을 빌드하는 방법입니다. 기본적인 기능을 보여주기 위해 Calendar 서비스를 사용하는 'Hello, World!' 상응 프로그램을 살펴봅니다. 자세한 내용은 자바 클라이언트 라이브러리의 개발자 가이드와 개별 제품 개발자 가이드에서 확인할 수 있습니다.

CalendarTest.java라는 파일을 만듭니다. 다음 import 문을 포함하여 시작합니다.

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

다음은 전체 프로그램입니다 (예외 처리 없음).

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");

그러면 리소스의 URL이 설정됩니다. 이 경우 인증된 사용자의 모든 캘린더 목록을 요청할 수 있습니다.

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

아래 줄은 URL에서 실제 GET 명령어를 실행하고 결과로 생성된 피드를 정리된 객체에 넣습니다.

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

아래의 for 루프는 각 항목을 반복하고 제목을 출력합니다. 제목은 TextConstruct로 저장되므로 일반 텍스트를 가져오려면 추가 함수 호출이 필요합니다.

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

이는 매우 기본적인 사항이며, 몇 가지 다른 일반적인 사항을 살펴보겠습니다. 다음 스니펫은 객체를 만들고 삽입하는 방법을 보여줍니다. 이 예에서는 새 캘린더 일정 항목입니다.

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);

또 다른 일반적인 작업은 쿼리를 빌드하는 것입니다.

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

디버깅하는 동안 또 다른 유용한 작업은 원시 XML을 덤프하는 것입니다. 라이브러리에서 이를 수행하는 데 사용할 수 있는 유용한 유틸리티가 있습니다. samples.util.*를 가져왔는지 확인합니다. 그런 다음 피드나 항목을 덤프합니다.

CommonUtils.dump(resultFeed, System.out);

더 세부적인 디버깅 도구는 클라이언트 라이브러리 내에서 로깅을 사용 설정하는 방법에 관한 Google Data API 클라이언트 디버깅: 프로그램 내 트래픽 탐색 도움말을 확인하세요.

클라이언트 라이브러리를 사용하여 앱을 빌드하는 방법을 알아보겠습니다. 자세한 내용은 각 Google Data API에 사용할 수 있는 개발자 가이드의 결론 섹션을 참고하세요.

마무리

이제 GData 자바 클라이언트 라이브러리를 사용하여 애플리케이션을 빌드하고 실행할 수 있기를 바랍니다. 사용할 수 있는 인기 IDE에 대해 다루지는 않았지만 Eclipse 또는 NetBeans와 같은 인기 IDE를 살펴보는 것이 좋습니다. 다음과 같은 유용한 추가 링크가 있습니다.

API에서 자바 클라이언트 라이브러리를 사용하는 데 궁금한 점이 있으면 API별 포럼에 글을 올려 주시면 됩니다.