Google Code が利用できる言語: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
Java 標準ライブラリの java.net.URLConnection を使用し、Java アプリケーションからの HTTP および HTTPS 接続を確立できます。App Engine は、URL フェッチ サービスを使用してこのインターフェースを実装します。
java.net の詳細については、Sun の java.net.URLConnection ドキュメント(英語)をご覧ください。
URL のページを取得する簡単な方法は、java.net.URL を作成しその openStream() メソッドをコールする方法です。このメソッドは接続確立の詳細を処理し、HTTP GET リクエストを発行し応答データを取得します。
import java.net.MalformedURLException;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
// ...
try {
URL url = new URL("http://www.example.com/atom.xml");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
while ((line = reader.readLine()) != null) {
// ...
}
reader.close();
} catch (MalformedURLException e) {
// ...
} catch (IOException e) {
// ...
}
より高度なリクエストでは、URL オブジェクトの openConnection() メソッドをコールし URLConnection オブジェクト(URL により、HttpURLConnection または HttpsURLConnection のいずれか)を作成することもできます。リクエストを発行する前に、このオブジェクトと詳細情報を用意します。リクエストを実行するには、getInputStream() や getOutputStream() などの URLConnection のメソッドをコールします。
URLConnection の App Engine への実装は、リモート ホストとの永続的な接続は保持しません。アプリケーションがリクエスト データを設定、または出力ストリームへの書き込みを実行すると、リクエスト データはメモリに保持されます。アプリケーションが、入力ストリームの取得(または connect() メソッドのコール)など、レスポンスに関する任意のデータにアクセスした場合、App Engine はリクエスト データを指定して URL フェッチ サービスをコールし、レスポンスを取得し、接続を切断してレスポンス データを返します。
次に、フォームのデータと共に特定の URL に HTTP POST リクエストを実行する例を示します。
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
// ...
String message = URLEncoder.encode("my message", "UTF-8");
try {
URL url = new URL("http://www.example.com/comment");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write("message=" + message);
writer.close();
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
// OK
} else {
// Server returned HTTP error code.
}
} catch (MalformedURLException e) {
// ...
} catch (IOException e) {
// ...
}
送信するリクエストに HTTP ヘッダーを設定するには、HttpURLConnection の setRequestProperty() メソッドをコールします。
connection.setRequestProperty("X-MyApp-Version", "2.7.3");
デフォルトでは、HttpURLConnection は HTTP リダイレクトを許可します。URL フェッチ サービスは最大 5 つのリダイレクトに従います。
リダイレクトを無効にするには、HttpURLConnection の setFollowRedirects() メソッドをコールします。
connection.setFollowRedirects(false);
URL フェッチ サービスは、永続的な HTTP 接続をサポートしていません。URLConnection オブジェクトを使用し、アプリケーションがレスポンス データにアクセスすると、App Engine は URL フェッチ サービスをコールしリクエストを完了します。レスポンス データへアクセスした後は、リクエスト データを変更できません。
アプリケーションは、リクエストのタイムアウトを明示的に設定できません。
URL フェッチ サービスは、送信するリクエストおよび受信するレスポンスのデータ サイズを制限します。java.net API を使用する場合、制限より大きなデータは、通知もないまま切り捨てられます。低レベルの URL Fetch API では、通知せずに切り捨てるか、制限より大きなデータには例外を発生させるかを指定できます。