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が返ってきます。以上、データ更新のサンプルでした。