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)