AndroidHttpClientによるHTTP POST
GCM (Google Cloud Messaging) のRegistration ID登録処理におけるAndroidアプリ側の処理として、サーバアプリに対してHTTP POSTで情報を送信する処理が必要になります。
AndroidでのHTTP POSTは使ったことがなかったので簡単なサンプルを使ってみました。今回はHttpUrlConnectionよりも使い方が簡単そうなAndroidHttpClientを使用しています。
基本的なロジックはAndroidHttpClientによるHTTP GETとほぼ同様ですが、HTTPリクエストにNamedValuePairのリストをセットする点が異なります。
以下のコード例でははしょっていますが、AndroidHttpClientはUIスレッドでは使えないので、適宜AsyncTask等と組み合わせる必要があります。
import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.message.BasicNameValuePair; import android.net.http.AndroidHttpClient; class MainActivity exteds Activity { @Override public void onCreate(Bundle savedInstanceState) { .... // HTTPリクエストの構築 HttpPost request = new HttpPost("http://server-app.example.com:3000/devices/register"); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("device_id", "DEVICEID_TEST00")); params.add(new BasicNameValuePair("registration_id", "REGID_TEST00")); try { request.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } // HTTPリクエスト発行 AndroidHttpClient httpClient = AndroidHttpClient.newInstance("Demo AndroidHttpClient"); HttpResponse response = null; try { response = httpClient.execute(request); } catch (IOException e) { e.printStackTrace(); } .... }