AndroidからADO.NET Data Service(REST)を扱う(データ追加編)
AndroidからRESTfulなADO.NET Data Serviceへのデータの追加です。前と同じテーブルを使います。
public void Add() { // 追加するデータ ItemMasterData newItemMasterData = new ItemMasterData(); newItemMasterData.set商品コード("100"); newItemMasterData.set商品名("商品100"); newItemMasterData.set金額(500); // データをJSONObjectに変換 JSONObject AddJsonObj = new JSONObject(); try { // Uri、Typeを生成 JSONObject jsonMeta = new JSONObject(); jsonMeta.put("Uri", "/M商品マスタ/"); jsonMeta.put("Type", "RestDataService.M商品マスタ"); // Uri、Typeを設定 AddJsonObj.put("__metadata", jsonMeta); // データを設定 AddJsonObj.put("商品コード", newItemMasterData.get商品コード()); AddJsonObj.put("商品名", newItemMasterData.get商品名()); AddJsonObj.put("金額", newItemMasterData.get金額()); Log.i("送信データ", AddJsonObj.toString(4)); } catch (JSONException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } // URL String mUrl = "http://locallhost/RestDataService/RestDataService.svc/M商品マスタ"; // POSTメソッド生成 HttpPost postMethod = new HttpPost(mUrl); // ヘッダーを追加 postMethod.setHeader("Accept", "application/json"); postMethod.setHeader("Content-type", "application/json"); // 追加データをメソッドに設定 try { postMethod.setEntity(new StringEntity(AddJsonObj.toString(), "UTF8")); } catch (UnsupportedEncodingException e1) { // TODO 自動生成された catch ブロック e1.printStackTrace(); } // Httpクライアント DefaultHttpClient httpClient = new DefaultHttpClient(); // 応答 HttpResponse retResponse = null; try { // 要求を出して応答を取得する retResponse = httpClient.execute(postMethod); } catch (ClientProtocolException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); return; } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); return; } // 結果を表示 Log.i("データ追加", "ステータス: " + String.valueOf(retResponse.getStatusLine().getStatusCode())); }
追加するデータをJSONObjectにするわけですが構造にちょっと気を付けなければいけません。
{ "__metadata": { "Uri": "/M商品マスタ/", "Type": "RestDataService.M商品マスタ" }, "商品コード": "100", "商品名": "商品100", "金額": 500 }
送信するデータの構造は__metadataはUriとTypeで構成されており、Uriにはマスタ名、Typeにはデータサービス側での型を指定します。そのあとはテーブルの項目名と値が並びます。これをPOSTメソッドのEntityにセットして送信し、成功時のステータスは201が帰ってきます。以上、データ追加のサンプルでした。