FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

サーバサイドのJavaでmBaaSにアクセスする

f:id:mbaasdevrel:20190318155501p:plain

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の連携に活かしてください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。