HttpWebRequest DELETE (ADO.NET Data Services フレームワーク)
HTTP DELETE 要求を使用すると、ADO.NET Data Services からデータを削除できます。DELETE 要求は、キー、プロパティ値、リンク、およびナビゲーション プロパティによって指定されるエンティティ セットに適用できます。
エンティティを削除する DELETE 要求
DELETE 要求に必要なデータは、文字列として書式設定され、HTTP 要求の一部となります。DELETE 要求は、まずエンティティ セットと ID キーを識別します。次の例は、AdventureWorks Sales Model (EDM) に基づいています。URI には Address
エンティティ セットとキーが含まれます ("https://localhost:50781/AdvWksSalesS.svc/Address(32523)"
)。削除するエンティティが継承階層の一部である場合は、次の __metadata
構文要素が必要です。
"{__metadata:{Uri:'/Addres(32523/', " +
"Type:'AdventureWorksModel.Address'}}"
Address
エンティティ セットからのデータ項目の削除に JSON 形式 (ADO.NET Data Services フレームワーク) を使用する例は、この解説の末尾にあるコード ブロックに示されています。
この解説の末尾にあるコード ブロック内のコードは、AdventureWorksModel
を配置するデータ サービスから Address
エンティティを削除します。HttpWebRequest r
は、そのコンストラクタの単一のパラメータとして、削除するエンティティ型の URI https://localhost:50781/AdvWksSalesS.svc/Address(32523
を使用して作成されます。
要求の本文は requestPayload
という名前の文字列に割り当てられます。メソッドは "DELETE"
に設定されます。ContentType
は json
プロトコルに割り当てられます。r.Accept = "application/json"
行は、json
プロトコルを使用してエンコードした応答 (応答がある場合) を返すようにサーバーに指示します。
サービスが HTTP 基本認証などのトランスポート ベースの認証スキームで保護されている場合は、資格情報を、要求に割り当てることによって渡すことができます。次の例では、DefaultCredentials
を使用しています。
要求 r
は Unicode テキストとして書式設定されます。要求の Stream オブジェクトにデジタル データを書き込むために、UTF8Encoding 変数を使用して要求の長さ (バイト単位) が取得されます。HttpWebResponse
オブジェクトは、要求の GetResponse
を呼び出すことによって割り当てられます。コード r.GetResponse
はデータを送信し、応答を取得します。もう 1 つの Stream オブジェクト rspStm
は、GetResponseStream
によって返されたデータの格納に使用します。
HttpWebRequest r =
WebRequest.Create(
"https://localhost:50781/AdvWksSalesS.svc/Address(32523)")
as HttpWebRequest;
string requestPayload = "{__metadata:{Uri:'/Address(32523)/', " +
"Type:'AdventureWorksModel.Address'}}";
r.Method = "DELETE";
UTF8Encoding encoding = new UTF8Encoding();
r.ContentLength = encoding.GetByteCount(requestPayload);
r.Credentials = CredentialCache.DefaultCredentials;
r.Accept = "application/json";
r.ContentType = "application/json";
//Write the payload to the request body.
using ( Stream requestStream = r.GetRequestStream())
{
requestStream.Write(encoding.GetBytes(requestPayload), 0,
encoding.GetByteCount(requestPayload));
}
try
{
HttpWebResponse response = r.GetResponse() as HttpWebResponse;
string responseBody = "";
using (Stream rspStm = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(rspStm))
{
textBoxResponse.Text = textBoxResponse.Text +
"Response Description: " +
response.StatusDescription;
textBoxResponse.Text = textBoxResponse.Text +
"Response Status Code: " + response.StatusCode;
textBoxResponse.Text = textBoxResponse.Text +
"\r\n\r\n";
responseBody = reader.ReadToEnd();
}
}
textBoxResponse.Text = "Success: " + response.StatusCode.ToString();
}
catch (System.Net.WebException ex)
{
textBoxResponse.Text = textBoxResponse.Text +
"Exception message: " + ex.Message;
textBoxResponse.Text = textBoxResponse.Text +
"\r\nResponse Status Code: " + ex.Status;
textBoxResponse.Text = textBoxResponse.Text + "\r\n\r\n";
// get error details sent from the server
StreamReader reader =
new StreamReader(ex.Response.GetResponseStream());
textBoxResponse.Text = textBoxResponse.Text + reader.ReadToEnd();
}
DELETE メソッドでのプロトコルの使用の詳細については、「DELETE メソッド (ADO.NET Data Services フレームワーク)」を参照してください。
参照
概念
DELETE メソッド (ADO.NET Data Services フレームワーク)
HttpWebRequest GET (ADO.NET Data Services フレームワーク)
HttpWebRequest PUT (ADO.NET Data Services フレームワーク)
HttpWebRequest POST (ADO.NET Data Services フレームワーク)
PUT、POST、および DELETE (ADO.NET Data Services フレームワーク)