Java で インターネット上のリソースを利用するには、 class URI, class URL, class URLConnection を用います。
URL (Uniform Resource Locator) はインターネット上のリソースの位置を表すものです。 リソースの識別子である URI (Uniform Resource Identifier) の一種です。
Java で URL を扱う際には、URL を表す class URL を使います。 class URL のインスタンスは、class URI のインスタンスを生成して変換することにより得られます。
URL url = new URI("http://www.w3.org/").toURL();
URL(Uniform Resource Locator) を表すクラスです。 URL はインターネット上のリソースの位置を表すものです。
URL に使える文字は限られており、英数字以外には「.」「-」「*」「_」しか使えません。 これら以外の文字、例えば空白や全角文字を使いたいときには、 URLエンコード と呼ばれる方法を用います。
Java では URLEncoder クラスの encode メソッドで URLエンコードをすることができます。
// エンコード前: https://www.google.com/search?q=東京電機大学 URL url = new URL("https://www.google.com/search?q=" + URLEncoder.encode("東京電機大学", "UTF-8")); // エンコード後: https://www.google.com/search?q=%E6%9D%B1%E4%BA%AC%E9%9B%BB%E6%A9%9F%E5%A4%A7%E5%AD%A6
URLが表す特定のサーバとの接続を表す抽象クラスです。 このオブジェクトは上記 URL クラスの openConnection() メソッドにより得られます。
URL url = new URI("http://www.w3.org/").toURL(); URLConnection connection = url.openConnection();
HTTP接続をする場合、実際には HttpURLConnection のインスタンスであるので、 HTTP接続固有の情報を参照したい場合には HttpURLConnection でキャストして使うことになります。
URL url = new URI("http://www.w3.org/").toURL(); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); // ブラウザ (User-Agent) connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6"); // リンク元 (Referer) connection.setRequestProperty("Referer", "http://www.google.com/"); // リダイレクトの指示を無視 connection.setInstanceFollowRedirects(false);
より詳細なヘッダの情報や、ステータスコード、リダイレクトなどを扱うことができます。
セッション管理や履歴の保存などで Cookie が使われることがあります。 Cookie の管理を自前でやるのは煩雑なことですが、 それを暗黙のうちに行ってくれるクラス java.net.CookieHandler があります。 なお、java.net.CookieHandler は抽象クラスで、 java.net.CookieManager が具象クラスです。
// CookieManager の生成 CookieManager manager = new CookieManager(); // CookieHandler のデフォルトに設定 CookieHandler.setDefault(manager);
こうしておくと、HttpURLConnection が自動的に CookieHandler を呼び出すので、Cookie の保存などの処理が暗黙のうちに行われるようになります。