Android:HTTP通信でGET, POSTする

WebAPIをバンバン使うアプリを作っていたわりに、微妙にJavaでのHTTP通信の方法をよくわかってなかったのですが、ようやくちょっとわかったのでメモっときます。今まではライブラリでやっていました。

API Level 8からAndroidHttpClientというのがあるらしいんですが、今回はあえてDefaultHttpClientで。

以下、GET

// 例外処理は省いています
// パラメータを生成
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("subject", "件名"));
params.add(new BasicNameValuePair("body", "本文です。こんにちは!"));
// パラメータをクエリに変換
String query = URLEncodeUtils.format(params, "UTF-8");
HttpGet httpGet = new HttpGet("http://www.example.com/?" + query);
DefaultHttpClient client = new DefaultHttpClient();
HttpResponse httpResponse = client.execute(httpGet);
// ステータスコードを取得
int statusCode = httpResponse.getStatusLine().getStatusCode();
// レスポンスを取得
HttpEntity entity = httpResponse.getEntity();
String response = EntityUtils.toString(entity);
// リソースを解放
entity.consumeContent();
// クライアントを終了させる
client.getConnectionManager().shutdown();
// 後はステータスコードやレスポンスを煮るなり焼くなり

以下、POST

// 例外処理は省いています
// パラメータを生成
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("subject", "件名"));
params.add(new BasicNameValuePair("body", "本文です。こんにちは!"));
HttpPost httpPost = new HttpPost("http://www.example.com/");
// パラメータを設定
httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
DefaultHttpClient client = new DefaultHttpClient();
HttpResponse httpResponse = client.execute(httpPost);
// ステータスコードを取得
int statusCode = httpResponse.getStatusLine().getStatusCode();
// レスポンスを取得
HttpEntity entity = httpResponse.getEntity();
String response = EntityUtils.toString(entity);
// リソースを解放
entity.consumeContent();
// クライアントを終了させる
client.getConnectionManager().shutdown();
// 後はステータスコードやレスポンスを煮るなり焼くなり

という感じっぽいです。

割と色々とやっているのに、こういう初歩的なことで詰まったりするので、基本をもっとちゃんとやらないといかんなぁと思いました。やっても忘れるので、俺俺ライブラリ作るか、こうやってブログにまとめておくか…。

ちなみに参考にした本は、横山さんの本です。

マッシュアップアプリを作りたい人にとっては、すごく参考になると思います!


タグ Android | パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です