Bắt đầu sử dụng Thư viện ứng dụng Java cho dữ liệu của Google

Stephanie Liu, Nhóm API dữ liệu của Google
Tháng 9 năm 2007
  1. Giới thiệu
  2. Cài đặt phần phụ thuộc
    1. Trên Windows
    2. Trên Mac OS X
    3. Trên Linux
  3. Cài đặt Thư viện ứng dụng Google Data
  4. Chạy mẫu
  5. Xây dựng ứng dụng của riêng bạn
  6. Lời kết
  7. Phụ lục: Thiết lập biến môi trường

Giới thiệu

Việc bắt đầu phát triển bằng một API lạ không bao giờ dễ dàng. Vì vậy, bài viết này có hướng dẫn từng bước về cách tải xuống và cài đặt Thư viện ứng dụng Java cho API dữ liệu của Google ("GData"). Tôi sẽ hướng dẫn bạn cách lấy tất cả các phần phụ thuộc và thiết lập các biến môi trường mà bạn cần. Bạn sẽ có thể kết hợp các dịch vụ GData khác nhau trong thời gian ngắn!

Bạn đang sử dụng Eclipse?

Hãy xem bài viết Coding in the Shade: Using Eclipse with Google Data APIs (Lập trình trong bóng râm: Sử dụng Eclipse với API Dữ liệu của Google).

Cài đặt các phần phụ thuộc

Thư viện ứng dụng Java GData có các phần phụ thuộc bên ngoài sau đây. Các phần sau đây sẽ mô tả cách cài đặt các phần phụ thuộc này trên hệ điều hành mà bạn yêu thích (hoặc hệ điều hành mà bạn đang dùng ở nơi làm việc).

  • JDK (Bộ phát triển Java) phiên bản 1.5 trở lên
  • Apache Ant phiên bản 1.7 trở lên
  • mail.jar trong JavaMail API 1.4 trở lên của Sun
  • activation.jar trong JavaBeansActivationFramework của Sun. Điều này chỉ bắt buộc đối với các API dành riêng cho nội dung nghe nhìn, bao gồm cả Document List Data API, Picasa Web Album API và YouTube Data API.
  • servlet.jar trong Servlet API phiên bản 2.3 trở lên của Sun. Bạn chỉ cần tệp này nếu thực thi mã mẫu trong các gói "sample.authsub" hoặc "sample.gbase.recipe".

Một số phần phụ thuộc .jar chỉ cần thiết cho các mẫu cụ thể, nhưng để tránh lỗi bản dựng, tốt nhất là bạn nên lấy mọi thứ. Chọn hệ điều hành bạn muốn để tiếp tục: Windows, Mac OS X hoặc Linux.

Cài đặt Thư viện ứng dụng Google Data

  1. Truy cập vào http://code.google.com/p/gdata-java-client/downloads/list
  2. Tải phiên bản mới nhất của thư viện ứng dụng (gdata-src.java-1.x.x.java.zip) và các mẫu (gdata-samples.java-1.x.x.java.zip).
  3. Giải nén nguồn thư viện ứng dụng vào máy tính.
  4. Chuyển đến gdata/java/build-src/build.properties rồi mở tệp này.
  5. Chỉnh sửa các phần phụ thuộc bên ngoài để trỏ đến vị trí của các tệp .jar trên máy cục bộ.
  6. Lưu ý: Trên Windows, hãy nhớ thoát dấu gạch chéo ngược. Ví dụ:

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

Chạy mẫu

Tất cả các mẫu có sẵn đều nằm trong thư mục gdata/java/sample của kho lưu trữ gdata-samples.java-1.x.x.java.zip. Tệp gdata/java/build-samples/build.properties chứa tất cả các giá trị đầu vào cho các mẫu có trong thư viện. Đặt sample.credentials.usernamesample.credentials.password thành tên người dùng và mật khẩu hợp lệ. Chúng ta có thể dùng Ant để tạo cũng như thực thi các mẫu.

Kiểm tra xem bạn đã cài đặt mọi thứ đúng cách hay chưa bằng cách mở dấu nhắc lệnh, chuyển sang thư mục gdata/java và nhập:

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

Bạn có thể nhận được một số thông tin hoặc thông báo cảnh báo, nhưng hãy tìm thông báo BUILD SUCCESSFUL ở cuối! Hãy xem phần khắc phục sự cố nếu bạn không nhận được thông báo thành công.

Hãy thử một mẫu có tính tương tác cao hơn bằng cách nhập:

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

Để tìm hiểu cách chạy một mẫu cụ thể, hãy chuyển đến gdata/java/build-samples và kiểm tra tệp bản dựng cho mẫu đó. Tìm phần samples run.

Khắc phục sự cố

Nếu bản dựng của bạn không thành công và xuất hiện thông báo lỗi như

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

hoặc một thông báo lỗi tương tự về việc thiếu tệp thiết yếu trong dự án, thì có thể bạn đang chạy phiên bản cũ của Ant. Nhập ant -version để đảm bảo bạn đang chạy phiên bản 1.7 trở lên. Hãy tham khảo hướng dẫn về phần phụ thuộc ở trên để tải phiên bản Ant mới nhất.

Tạo ứng dụng của riêng bạn

Câu hỏi tiếp theo là làm cách nào để tạo ứng dụng của riêng bạn. Tôi sẽ trình bày một chương trình tương đương với "Hello, World!" bằng cách sử dụng dịch vụ Lịch để minh hoạ chức năng cơ bản. Bạn có thể xem thêm thông tin chi tiết trong hướng dẫn dành cho nhà phát triển của Thư viện ứng dụng Java, cũng như hướng dẫn dành cho nhà phát triển của từng sản phẩm.

Tạo một tệp có tên là CalendarTest.java. Bắt đầu bằng cách thêm các câu lệnh nhập sau.

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

Sau đây là toàn bộ chương trình (không có bất kỳ hoạt động xử lý ngoại lệ nào).

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

Sau đó, URL của tài nguyên sẽ được đặt. Trong trường hợp này, đây là nơi bạn có thể yêu cầu danh sách tất cả các lịch của người dùng đã xác thực.

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

Dòng bên dưới sẽ thực thi lệnh GET thực tế trên URL và đưa nguồn cấp dữ liệu thu được vào một đối tượng gọn gàng.

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

Vòng lặp for bên dưới sẽ lặp lại qua từng mục và in tiêu đề. Xin lưu ý rằng tiêu đề được lưu trữ dưới dạng TextConstruct, vì vậy, bạn cần gọi thêm một hàm để lấy văn bản thuần tuý.

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

Đó là những điều khá cơ bản. Hãy xem qua một vài điều phổ biến khác. Đoạn mã sau đây sẽ cho bạn biết cách tạo và chèn một đối tượng. Trong ví dụ của chúng ta, đó sẽ là một mục nhập sự kiện mới trên lịch.

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

Một thao tác phổ biến khác là tạo truy vấn.

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

Trong khi gỡ lỗi, một thao tác hữu ích khác là kết xuất XML thô. Có một tiện ích hữu ích mà bạn có thể dùng để thực hiện việc này trong thư viện. Đảm bảo bạn đã nhập samples.util.*. Sau đó, hãy loại bỏ nguồn cấp dữ liệu hoặc mục nhập đó.

CommonUtils.dump(resultFeed, System.out);

Để biết các công cụ gỡ lỗi chuyên sâu hơn, hãy xem bài viết Gỡ lỗi ứng dụng Google Data API: Khám phá lưu lượng truy cập trong chương trình của bạn về cách bật tính năng ghi nhật ký trong thư viện ứng dụng.

Điều này sẽ giúp bạn cảm nhận được cách tạo ứng dụng bằng thư viện ứng dụng. Để biết thông tin chi tiết hơn, hãy xem phần kết luận để biết danh sách các hướng dẫn dành cho nhà phát triển hiện có cho từng API Dữ liệu của Google.

Kết luận

Hy vọng rằng giờ đây, bạn có thể tạo và chạy các ứng dụng bằng Thư viện ứng dụng Java GData! Tôi không đề cập đến bất kỳ IDE phổ biến nào mà bạn có thể sử dụng, nhưng bạn có thể xem xét các công cụ phổ biến như Eclipse hoặc NetBeans. Sau đây là một số đường liên kết khác có thể hữu ích:

Nếu có thắc mắc về việc sử dụng Thư viện ứng dụng Java với bất kỳ API nào, bạn có thể cho chúng tôi biết bằng cách đăng bài trong diễn đàn dành riêng cho API.