ホーム > Google App Engine > Google App Engine / Java (GAE/J)で URL フェッチ APIを使う

Google App Engine / Java (GAE/J)で URL フェッチ APIを使う

2009 年 11 月 28 日 tdtsh

Google App Engine/Java (以下 GAE/J) のアプリケーションから、URL Fetch Java API (以下 URLフェッチAPI)を使って、Web上の他のリソースにアクセスできます。

今回は、とりあえずGETでリモートのページ内容を取得してみます。

URLフェッチAPIの利用には、2つの方法があります。

1) Java標準ライブラリ java net を使用

2) GAEの 低レベルAPI を使用

1) は 2) のラッパーの様です。


まずは、 1) java net を使用の方から。

public String fetchUrl(String urlStr) throws IOException{
	StringBuilder sb = new StringBuilder();
	BufferedReader reader = null;
	URL url = new URL(urlStr);
	reader = new BufferedReader(new InputStreamReader(url.openStream()));
	String line;
	while ((line = reader.readLine()) != null) {
		sb.append(line + "\n");
	}
	reader.close();
	return sb.toString();
}

これで一応動きますが、エンコーディングがUTF-8のページを表示する際に文字化けしてしまいました。


次に、2) 低レベルAPIのサンプルです。

public static String fetchUrl(String urlStr, String encoding) throws IOException {
	URLFetchService urlFetchSrv = URLFetchServiceFactory.getURLFetchService();
	HTTPResponse res = null;
	URL url = new URL(urlStr);
	res = urlFetchSrv.fetch(url);
	return new String(res.getContent(), encoding);

	//上記をインラインで書くとこんな感じ
	//return new String(URLFetchServiceFactory.getURLFetchService().fetch(new URL(urlStr)).getContent(), encoding);
}

エンコーディングを指定して適宜変換しています。
この方法で、文字化けが解消されました。

実際には、さまざまなクウォータを気にしながらになると思いますが、うまく使えば色んな事が出来そうです。
サイトをGAEに移行する際に、旧コンテンツをしばらく残したい場合に使えないかな、と思っています。
あと、決済ASPなどとの連携にも活躍しそうですね。

色々試してみたいと思います。

カテゴリー: Google App Engine タグ:
  1. コメントはまだありません。
コメントは受け付けていません。