libro
www.tuyano.com
Android開発ビギナーのためのJava超入門

Androidで使えるJava SEのクラスライブラリ (4/5)

作成:2011-01-31 16:22
更新:2011-01-31 16:24

■java.netでネットワークアクセス!

java.net」パッケージは、ネットワーク関係のクラスがまとめられています。これにはいろいろと機能があるのですが、Androidで利用する場合、「HTTPを使ったGET/POST」がもっとも中心的な使い方となるでしょう。これには以下のようなクラスが利用されます。


URLクラス
URLのアドレスを管理するためのものです。まずはこのクラスを使ってURLを用意します。

HttpURLConnectionクラス
HTTPを使って指定のURLにアクセスするための接続を管理するためのものです。ここから入出力のストリームを取り出し操作をします。

ネットワークアクセスは、これらのクラスと、ストリーム関係のクラスを組み合わせて行います。だいたい以下のような流れになります。

1. URLインスタンスの用意。
2. URLからHttpURLConnectionインスタンスを取得。
3. HttpURLConnectionで接続を開始。
4. HttpURLConnectionからInputStreamを取得。
5. InputStreamから必要なデータをロード。
6. 作業が終わったらInputStreamclose
7. HttpURLConnectionの接続を解除。

――下のリスト欄に、簡単なネットワークアクセスの例を上げておきます。これで、www.android.comにあるHTMLデータを1000バイト読み込んで書き出します。

実は、ネットワークアクセスは、半分ぐらいは先の「java.io」に用意されているストリームと呼ばれるクラスが使われるのです。このjava.netにあるクラスは、単に接続に関する機能を提供するだけで、実際にデータを読み書きするのはjava.ioにあるクラスを利用します。java.ioは、さまざまなデータアクセスの基本なのです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

import java.io.*;
import java.net.*;

public class Sample {
	
	public static void main(String[] args) {
		URL url = null;
		BufferedInputStream in = null;
		HttpURLConnection con = null;
		try {
			url = new URL("http://www.android.com/");
			con = (HttpURLConnection) 
					url.openConnection();
			in = new BufferedInputStream
					(con.getInputStream());
			byte[] data = new byte[1024];
			in.read(data);
			String res = new String(data);
			System.out.println(res);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			con.disconnect();
		}
	}

}
※関連コンテンツ

「Android開発ビギナーのためのJava超入門」に戻る