PHP-Androidアプリ間のデータの受け渡しのやり方

過去にWebと通信するAndroidネイティブアプリを制作したことがあったので、今回はその通信とデータの受け渡し(api通信)に関してまとめていきたいと思います。

イメージとしましては、AndroidアプリからレンタルサーバーやMAMP、XAMPP内のPHPのコードに要求を出してその結果がJSON形式で返されるので、それをAndroid側で受け取るという流れです。
今回はサーバー側とアプリ側でのいくつかの文字の受け渡しに関してざっくりとですが説明したいと思います。

①アプリからサーバーにデータを送る方法
通信に関してはAsyncHttpClinetという便利なライブラリがあるのでそれを利用します。それの使い方の説明に関しては断片的にしか行いませんので、適宜調べてみて下さい。
~データを送るJavaのコード~

String url = "phpのコードがあるurl";
final RequestParams params = new RequestParams(); //リクエストパラメータ
params.put("hoge", "fuga"); //送るパラメータ1
params.put("aa", "bb"); //送るパラメータ2
AsyncHttpClient client = new AsyncHttpClient(); //通信準備
client.get(uri, params, new AsyncHttpResponseHandler() { //パラメータを伴い通信開始
  ~通信後の処理~
}

postで通信する際は「client.post()」になります。

②サーバーでデータを受け取る方法
それでは、送られたデータがどうなるのかPHPのコードを見てみましょう。

$data1 = $_GET['hoge']; //$data1には"fuga"が入る
$data2 = $_GET['aa']; //$data2には"bb"が入る

2行で取得完了です。postで送られた場合は$_POSTで受け取ります。

③サーバーからアプリ側にデータを返す方法
次に$dataを再びアプリ側に返してあげましょう。今回はJSONを用いてやってみたいと思います。

$ar[] = array("hoge" => $data1); // "hoge" => "fuga"
$ar[] = array("aa" => $data2); // "aa" => "bb"
header('Content-Type: application/json; charset=utf-8'); //JSONファイルの出力
echo json_encode($ar, JSON_UNESCAPED_UNICODE); //JSON形式にして返す

このようにハッシュにして返してあげると複数のデータを管理できるので便利です。特に宛先を指定しなくても元のアプリ側に戻っていきます。
ちなみに配列$arは
{$ar[0] = {["hoge"] => “fuga”}, $ar[1] = {["aa"] => “bb”}}
というような感じになっています。

④サーバー側のデータをアプリ側で受け取る方法
最後に返ってきたデータをアプリ側で受け取ります。①の「~通信後の処理~」の部分に書いていきます。

@Override
//通信成功時の処理
public void onSuccess(String response) {
  try {
    ar = new JSONArray(response); //受け取ったデータを配列にします
    JSONObject obj1 = ar.getJSONObject(0); //配列内のオブジェクトデータを取得
    JSONObject obj2 = ar.getJSONObject(1); //配列内のオブジェクトデータを取得
    System.out.println(obj1.getString("hoge")); // "fuga"
    System.out.println(obj2.getString("aa"); // "bb"
  }
}

変数responseを出力することで、サーバー側からどのような結果が返ってきたかを知ることが出来るため、デバッグ時に役立ちます。

以上でPHP-Androidアプリ間のデータの受け渡しのやり方の説明を終わります。
api通信が使えると、作れるアプリの幅もだいぶ増えると思うのでオススメです。

お見積もりフォーム