Sdílet prostřednictvím


HttpWebRequest DELETE (ADO.NET Data Services-Framework)

Mit einer HTTP DELETE-Anforderung können Daten aus ADO.NET Data Services gelöscht werden. Die DELETE-Anforderung kann auf Entitätenmengen angewendet werden, die durch einen Schlüssel, Eigenschaftswerte, Links und Navigationseigenschaften identifiziert werden.

DELETE-Anforderung zum Entfernen einer Entität

Die für die DELETE-Anforderung erforderlichen Daten werden als Zeichenfolge formatiert und in den Hauptteil der HTTP-Anforderung eingegliedert. Bei einer DELETE-Anforderung werden zunächst die Entitätenmenge und der Identitätsschlüssel identifiziert. Das folgende Beispiel beruht auf dem AdventureWorks Sales-Modell (EDM). Der URI enthält die Entitätenmenge Address und den Schlüssel: "https://localhost:50781/AdvWksSalesS.svc/Address(32523)". Wenn die zu entfernende Entität zu einer Vererbungshierarchie gehört, ist das __metadata-Syntaxelement erforderlich:

  "{__metadata:{Uri:'/Addres(32523/', " +
      "Type:'AdventureWorksModel.Address'}}"

Ein vollständiges Beispiel, in dem das JSON-Format (ADO.NET Data Services-Framework) verwendet wird, um Daten aus der Address-Entitätenmenge zu entfernen, finden Sie im Codeblock am Ende dieser Beschreibung.

Mit dem Code im Codeblock am Ende dieser Beschreibung wird eine Address-Entität aus dem Datendienst gelöscht, der das AdventureWorksModel bereitstellt. Für den URI des zu löschenden Entitätstyps wird eine HttpWebRequest r mit https://localhost:50781/AdvWksSalesS.svc/Address(32523 als einzigem Parameter des Konstruktors erstellt.

Der Textkörper der Anforderung wird der Zeichenfolge requestPayload zugewiesen. Die Methode ist auf "DELETE" festgelegt. Der ContentType ist einem json-Protokoll zugewiesen. Mit der r.Accept = "application/json"-Zeile wird der Server angewiesen, eine eventuelle Antwort mit dem json-Protokoll codiert zurückzusenden.

Wenn der Dienst durch ein übertragungsbasiertes Authentifizierungsschema (z. B. die HTTP-Standardauthentifizierung) geschützt ist, können Anmeldeinformationen übergeben werden, indem sie der Anforderung zugewiesen werden. Im folgenden Beispiel werden DefaultCredentials verwendet.

Die Anforderung r ist als Unicode-Text formatiert. Eine UTF8Encoding-Variable wird verwendet, um die Länge der Anforderung in Bytes abzurufen und digitale Daten in das Stream-Anforderungsobjekt zu schreiben. Das HttpWebResponse-Objekt wird durch Aufrufen von GetResponse für die Anforderung zugewiesen. Die Daten werden vom r.GetResponse-Code gesendet, und eine Antwort wird erhalten. In einem anderen Stream-Objekt, rspStm, werden die von GetResponseStream zurückgegebenen Daten gespeichert.

    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();
        
    }

Weitere Informationen zu den mit der DELETE-Methode verwendeten Protokollen finden Sie unterDELETE-Methode (ADO.NET Data Services-Framework).

Siehe auch

Konzepte

DELETE-Methode (ADO.NET Data Services-Framework)
HttpWebRequest-GET (ADO.NET Data Services-Framework)
HttpWebRequest PUT (ADO.NET Data Services-Framework)
HttpWebRequest POST (ADO.NET Data Services-Framework)
PUT, POST und DELETE (ADO.NET Data Services-Framework)