次の方法で共有


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" に設定されます。ContentTypejson プロトコルに割り当てられます。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 フレームワーク)