Pocket

 

AndroidアプリからサーバーにHTTP通信する場合の備忘録です。
(androidはまだ勉強を始めたばかりで理解が十分でないので、間違っている部分も多々あると思います。
間違いに気づいた時点で修正していくつもりです。)

 

Androidアプリでサーバーと非同期通信処理を行うためには、AsyncTaskを継承したクラスを作成します。
AsyncTaskに用意されている以下のメソッドを必要に応じてオーバーライドします。
(1)onPreExecute()   ・・・ タスク実行前にUIスレッドで実行される。事前準備の処理を実装する。(例:プログレスバー表示)
(2)doInBackground()  ・・・ バックグラウンドスレッドで実行される。実装必須。
(3)onProgressUpdate() ・・・ doInBackGround()でpublishProgress()が呼ばれた場合に実行される。(例:進行状況表示)
(4)onPostExecute()   ・・・ バックグラウンド処理が終了したときに実行される。結果をUIスレッドに反映する処理を実装する。

今回は、サーバーにPOSTして結果をJSONもしくは画像を受信することを想定しているので
レスポンスはどちらでも対応できるようにInputStreamを返却しています。

サーバーと通信を行うクラスは、マルチパート形式に対応しています。
マルチパート形式に対応するためには、以下のライブラリの追加が必要です。
・httpmime-x.x.x.jar
http://hc.apache.org/downloads.cgi ⇒ HttpClient x.x.x (GA) の項目よりダウンロード
(今回私は、httpmime-4.3.3.jarとhttpcore-4.3.2.jarを追加しました。)

非同期で通信してレスポンスを起動元に返却するためにコールバックを定義しています。

 

コールバック定義

 

呼び出し側
(※Fragment)

 

サーバーと通信を行うクラス

MultipartEntity は Deprecated(4.3)となっていたので、
代わりに MultipartEntityBuilderを使用しています。

 

AsyncTaskLoaderやVolleyを利用する方法もあるらしいので、勉強してみようと思います。

【2014/04/11 追記】
Volleyについての記事を書きました。⇒ ネットワーク通信ライブラリ Volley

 

Pocket

Comments are closed.