前回のおさらい
前回は,Android OSに搭載されているリレーショナルデータベースシステム「SQLite」に関して,以下を学びました。
具体的には,
- テーブルの作成
- アップグレード処理
- レコードの追加
- レコードの更新
- レコードの読み出し
の説明しました。使いこなすには,SQL文の学習が必要になりますが,SQLiteのライブラリは簡単に使うことができるので,サンプルプログラムを修正するなどして,自分のものにしてください。
ネットへ接続する
スマートフォンは手軽にネットワークへ接続できるので,Webサービスと連携したり,複数のWebサービスをマッシュアップする等,ネットワークへの接続を前提とするアプリを開発するケースが多くなるはずです。そこで,今回は,ネットワークへの接続方法をご説明します。
ネットワークへの接続と言っても様々ありますが,今回は,最も汎用性の高いHTTP通信を取り上げます。
利用するライブラリ
Android OSでHTTP通信を行う場合,android.net.http,org.apache.httpなど,複数のクラスライブラリから好みのものが使えますが,今回は,org.apache.httpを使って,HTTPプロトコルのGET, POSTメソッドの実装方法をご紹介します。
アプリからインターネットへ接続する場合は,AndroidManifest.xmlに以下の記述を追加して,インターネット接続への許可を与えてください。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
GETメソッドの実装
以下は,GETメソッドの実装例です。
doGetメソッドは,第一引数にURLを指定して実行すると,実行結果を文字列で返します。
public String doGet( String url )
{
try
{
HttpGet method = new HttpGet( url );
DefaultHttpClient client = new DefaultHttpClient();
// ヘッダを設定する
method.setHeader( "Connection", "Keep-Alive" );
HttpResponse response = client.execute( method );
int status = response.getStatusLine().getStatusCode();
if ( status != HttpStatus.SC_OK )
throw new Exception( "" );
return EntityUtils.toString( response.getEntity(), "UTF-8" );
}
catch ( Exception e )
{
return null;
}
}
では,詳しく見ていきます。
まずは,HttpGetクラスの第一引数にURLを指定してクラスを生成して,GETメソッドを使用する準備を行います。
HttpGet method = new HttpGet( url );
続いて,DefaultHttpClientクラスを生成します。
DefaultHttpClient client = new DefaultHttpClient();
GETメソッドを実行するには,DefaultHttpClientのexecuteメソッドを呼び出します。
第一引数には,最初に生成したHttpGetを指定します。
HttpResponse response = client.execute( method );
executeメソッドを実行すると,レスポンスコードを返します。
以下のように返値を評価し,正しく実行された確認します。例では,正しく実行されなかったらthrowしています。
int status = response.getStatusLine().getStatusCode();
if ( status != HttpStatus.SC_OK )
throw new Exception( "" );
executeメソッドが正しく実行されたら,以下のように結果を文字列に変換して,returnで返しています。
return EntityUtils.toString( response.getEntity(), "UTF-8" );
POSTメソッドの実装
POSTメソッドの実装は,以下のようになります。
doPostメソッドは,第一引数にURL,第二引数にパラメーターを指定して実行すると,結果を文字列で返します。
public String doPost( String url, String params )
{
try
{
HttpPost method = new HttpPost( url );
DefaultHttpClient client = new DefaultHttpClient();
// POST データの設定
StringEntity paramEntity = new StringEntity( params );
paramEntity.setChunked( false );
paramEntity.setContentType( "application/x-www-form-urlencoded" );
method.setEntity( paramEntity );
HttpResponse response = client.execute( method );
int status = response.getStatusLine().getStatusCode();
if ( status != HttpStatus.SC_OK )
throw new Exception( "" );
return EntityUtils.toString( response.getEntity(), "UTF-8" );
}
catch ( Exception e )
{
return null;
}
}

