Google App Engine / Java (GAE/J)で URL フェッチ APIを使う
2009 年 11 月 28 日
Google App Engine/Java (以下 GAE/J) のアプリケーションから、URL Fetch Java API (以下 URLフェッチAPI)を使って、Web上の他のリソースにアクセスできます。
今回は、とりあえずGETでリモートのページ内容を取得してみます。
URLフェッチAPIの利用には、2つの方法があります。
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