AndroidからADO.NET Data Service(REST)を扱う(データ更新編)
AndroidからRESTfulなADO.NET Data Serviceを更新します。今回も前回のテーブルを使用します。追加とほぼ同じコードとなりますが、使用するメソッドと目指すURLが違います。
public void Update() { // 更新するデータ ItemMasterData newItemMasterData = new ItemMasterData(); newItemMasterData.set商品コード("100"); newItemMasterData.set商品名("商品111"); newItemMasterData.set金額(10000); // データを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://localhost/RestDataService/RestDataService.svc/M商品マスタ('100')"; // PUTメソッド生成 HttpPut putMethod = new HttpPut(mUrl); // ヘッダーを追加 putMethod.setHeader("Accept", "application/json"); putMethod.setHeader("Content-type", "application/json"); // 更新データをメソッドに設定 try { putMethod.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(putMethod); } catch (ClientProtocolException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); return; } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); return; } // 結果を表示 Log.i("データ更新", "ステータス: " + String.valueOf(retResponse.getStatusLine().getStatusCode())); }
追加編で追加したデータを更新します。送るデータの形式は前回と変わらず、メソッドがPUTメソッドに変わります。さらにURLが更新対象データのユニークなURLとなり、これはブラウザで直接RESTデータを見た際のid属性にあたります。
このURLには主キーが含まれており、1件のデータにアクセスすることができるわけです。直接このURLをブラウザで見てみると1件分のRESTデータが返ってきます。
更新成功時のステータスコードは204が返ってきます。以上、データ更新のサンプルでした。