2012/03/05

Android の HTTP クライアントは何を使うべきか?

2015/9/19 追記
Android M では Apache の DefaultHttpClient が使えなくなりました。
OS イメージにはしばらく維持され、コンパイルを通すためのオプションも提供されるようですが、今後新規に作成するアプリでは HttpURLConnection を使うのが良いでしょう。
元ネタは↓
Android's HTTP Clients | Android Developer's Blog

Android の HTTP クライアントは 3つあります。
元ネタでは2つって書いてありますけど、私は3つとカウントしています。
確かに大きく分けると2つなんでしょうが、使う側の選択肢としては3つあると思った方が良いんじゃないかと。
  1. org.apache.http.impl.client.DefaultHttpClient
    Apache の提供している HTTP クライアント。
    バグも少なく安定しているが、でかい。
  2. android.net.http.AndroidHttpClient
    DefaultHttpClient を Android 用に最適化したクラス。
    ただ、AndroidHttpClient | Kazzzの日記 によるとむしろ使いにくくなっているらしい。
    元ネタでは、これは DefaultHttpClient と合わせて1つとカウントしている。
  3. java.net.HttpURLConnection
    軽いらしいが、Froyo以前の実装にはバグがある。

で、どれを使ったら良いのかというと、元ネタでは、
「Froyo より前だったら Apache を、Gingerbread 以降では HttpURLConnection を使うのが良い」
と書いてあります。

Gingerbread 以降のみ対応のアプリケーションを作ることは、まだ当分の間はなさそうなので、結局のところ DefaultHttpClient を使うことになるのでしょう。
(AndroidHttpClient は使いづらそうなので、私は選択肢から外しました)

2012/3/11 追記
Android の DefaultHttpClient はデフォルトではマルチパートに対応していません。
そのため、画像をアップロードする等、マルチパートが必要な場合、以下のライブラリを追加導入する必要があります。

apache-mime4j-0.6.jar
httpmime-4.0.jar

それぞれ、
http://james.apache.org/mime4j/ の Download - Releases から
http://hc.apache.org/downloads.cgi の HttpClient から
ダウンロードすることができます。

使い方は検索するといろいろ出てくると思います。

0 件のコメント: