mBaaSではAndroid向けにJava SDKを提供していますが、これはAndroidと密結合になっており、サーバサイドで利用できるものではありません。そこで純粋なJavaを用いてmBaaSにアクセスしてみましょう。
前回、署名を生成する処理までは紹介しました。次はこの署名を使って実際にmBaaSにアクセスしてみます。
署名を取得する
これは前回の通りです。
Signature s = new Signature();
String signature = s.sign(method, path, applicationKey, ts, queries, clientKey);
HTTPリクエストを生成する
HTTPリクエストするためのオブジェクトを作成します。以下の処理は try/catch の中で行っていきます。
HttpURLConnection con = null; StringBuffer result = new StringBuffer(); try { URL url = new URL("https://" + Signature.FQDN + path + "?where=" + URLEncoder.encode(where.toString(), "UTF-8")); con = (HttpURLConnection) url.openConnection(); }
HTTPヘッダーのセッティング
HTTPヘッダーに値を設定します。アプリケーションキー、署名、そしてタイムスタンプを設定します。
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS'Z'"); df.setTimeZone(new SimpleTimeZone(0, "GMT")); con.setRequestMethod(method); con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty(Signature.NCMB_APPLICATION_KEY_NAME, applicationKey); con.setRequestProperty(Signature.NCMB_APPLICATION_TIMESTAMP_NAME, df.format(ts)); con.setRequestProperty("X-NCMB-Signature", signature);
HTTPリクエストの実行
HTTPリクエストを実行して、その結果が200系かどうか判定します。今後の処理は リクエスト成功時の処理を書く
のブロック内に記述します。
con.connect(); final int status = con.getResponseCode(); if (status == HttpURLConnection.HTTP_OK) { // リクエスト成功時の処理を書く }else{ System.out.println(status); }
レスポンスを受け取る
リクエスト結果を受け取ります。これはJSONで返ってきます。
final InputStream in = con.getInputStream(); String encoding = con.getContentEncoding(); if(null == encoding){ encoding = "UTF-8"; } final InputStreamReader inReader = new InputStreamReader(in, encoding); final BufferedReader bufReader = new BufferedReader(inReader); String line = null; // 1行ずつテキストを読み込む while((line = bufReader.readLine()) != null) { result.append(line); } bufReader.close(); inReader.close(); in.close(); System.out.println(result);
JSONで結果を受け取ったら org.json.JSONObject
などを使ってパースすれば良いでしょう。
まとめ
HTTPリクエスト時に必要なヘッダー情報などを覚えてしまえば、利用するのは難しくないでしょう。ぜひサーバサイドとmBaaSの連携に活かしてください。