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」を継承した内部クラスを作ってそこでネットワーク処理を行う

参考サイト

検索プログラマのメモ

miettalの日記

コンテンツを非同期サーバー送信する