2009年4月13日月曜日

"Google App Engine Java"で"@nifty TimeLine API"を利用

スズキです。

"Google App Engine Java"から"@nifty TimeLine API"を利用して、
タイムラインに「できごと」を投稿してみました。(APIの仕様は下記です)
http://webservice.nifty.com/timeline/v1/articles/create.htm

実際にはGAEから"@nifty TimeLine API"のURLにアクセスして、…
といった機能を実装するわけですが、
これは、GAEの"URL Fetch"の"Low-level API"を利用しています。
http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/urlfetch/package-summary.html

--------【Java】--------
// "ISO 8601"形式の日付情報
FastDateFormat format = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT;

// "Timeline API"のURL
URL url = new URL("http://api.timeline.nifty.com/api/v1/articles/create");

// "TimeLine API"のパラメータを設定
Map<String, String> map = new HashMap<String, String>();
map.put("timeline_key", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
map.put("timeline_id" , "3887");
map.put("title" , URLEncoder.encode("タイトル", "UTF-8"));
map.put("description" , URLEncoder.encode("説明", "UTF-8"));
map.put("start_time" , format.format(new Date()));
map.put("end_time" , format.format(new Date()));
map.put("grade" , "12");

// POSTパラメータの作成
List<String> params = new ArrayList<String>();
for(Entry<String, String> entry : map.entrySet()) {
  params.add(entry.getKey() + "=" + entry.getValue());
}

// "Time1Line API"の実行
HTTPRequest request = new HTTPRequest(url, HTTPMethod.POST);
request.setPayload(StringUtils.join(params, "&").getBytes());
URLFetchService fetchService = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = fetchService.fetch(request);

// XMLの結果をそのまま出力
resp.setContentType("text/xml");
resp.getOutputStream().write(response.getContent());
--------

「"Time1Line API"の実行」の部分が、
GAEの"URL Fetch"の"Low-level API"を利用したコードになっています。

次は"DatastoreService"やろう。

--
http://suz-lab.blogspot.com/

0 コメント: