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などとの連携にも活躍しそうですね。
色々試してみたいと思います。