Android開発 | HttpPostしてみた話
AndroidでHttp通信をしてサーバーにデータをPostしてみたので備忘録として記録します。
AndroidでHttp通信する方法
サンプルプログラムではボタンを押すとtestという文字列をhttp://localhost:3000にPostするプログラムです。
ポイント
- AndroidManifestファイルの設定
プログラムからインターネットに接続するにはAndroidManifestファイルに接続許可するpermissionをONにする必要があります。
<uses-permission android:name="android.permission.INTERNET" />
- NetworkOnMainThreadExeption
32行目を見ると以下のような命令が書いてあると思います。
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
もし、この文が抜けてしまうとNetWorkOnMainThreadExeptionという例外が発生します。この例外はAndroid3.1以降の端末で起こります。
原因
Android3.0までは「StrictMode」が有効になっていたのですが、これ以降のバージョンでは無効になっています。 これが無効になっているとメインスレッド(UIスレッド)でネットワーク処理を行うようなプログラムを書くと例外が発生してしまいます。
解決策
- 「StrictMode」を有効にする(32行参照)
- 「AsyncTask」を継承した内部クラスを作ってそこでネットワーク処理を行う