はじめに
Googleのインフラで実行されるクラウドサービス「Google App Engine」が2009年4月7日にJavaに対応しました。Javaエンジニアにも利用できるようになった、Google App Engineを一緒に勉強して行きましょう!
今回は、他のサーバと通信をするための、URL Fetch Java APIを勉強したいと思います。
対象読者
- ウェブサービス開発に興味のあるJavaエンジニア
- Google App Engine for Javaに興味がある方
必要な環境
- 「Google Plugin for Eclipse」がインストールされている、Eclipse 3.3(Europa)か3.4(Ganymede)
開発環境の構築手順については、第1回の解説を参照してください。
URL Fetch Java APIとは?
Google App Engineではソケット通信が制限されており、今回勉強するURL Fetch Java APIを利用する以外の方法で、他のサーバと通信することはできません。URL Fetch Java APIでは、次のことができます。
- HTTP/HTTPSのコネクション作成
- GET/POST/PUT/HEAD/DELETEメソッドによるリクエスト
- リクエスト時のヘッダー設定
- レスポンスの取得
- リダイレクトの制御
送受信サイズは、共に1MBに制限されているのでご注意ください。また、第1回で説明したGoogle App Engineの制限とは別に、URL Fetch Java APIには以下の制限があります。Google App EngineとURL Fetch Java APIの両方が制限値以下の状態でないとAPIの呼び出しができません。
今のところ、課金によってこれらの制限値を増やすことはできません。
リソース | 単位 |
API呼び出し | 657084回 |
データ送信 | 4ギガバイト |
データ受信 | 4ギガバイト |
URL Fetch Java APIを使ってみよう!
Google App Engineの「URL Fetch Java API」は、java.net.URLConnection
と関連するJavaの標準APIのインターフェイスになっているので、これらの標準APIを利用したことのある方はすぐに使えます。
まずは、他のウェブサービスからデータを取得するソースコードを見てみましょう。
URL urlPathtraq = new URL("http://api.pathtraq.com/pages?api=json&url=" + url);// (1) BufferedReader reader = new BufferedReader(new InputStreamReader(urlPathtraq.openStream()));// (2) String line; while ((line = reader.readLine()) != null) { // (3) // メイン処理 }
- 接続先のURLを指定してURLインスタンスを取得します。
- 入力ストリームをバッファーに取り込みます。
- バッファーのデータを1行ずつ取り出します。
「Google Secure Data Connector」というテクノロジーを利用すると、URL Fetch Java APIを利用して、ファイアーウォール内にある社内サーバからデータを取得することができます。興味のある方は調べてみるとよいでしょう。
プロジェクトの作成
以下の設定でGWTプロジェクトを作成してください。GWTプロジェクトの作成手順については、第1回の解説を参照してください。
Project name | UrlFetchTest |
Package | com.daisukeyamashita.test.urlfetch |