HttpWebRequest DELETE (ADO.NET Data Services Framework)
Des données peuvent être supprimées d'ADO.NET Data Services à l'aide d'une demande HTTP DELETE. La demande DELETE peut être appliquée à des jeux d'entités identifiés par une clé, des valeurs de propriétés, des liens et des propriétés de navigation.
Demande DELETE afin de supprimer une entité
Les données requises par la demande DELETE sont mises en forme en tant que chaîne qui devient partie intégrante du corps de la demande HTTP. Une demande DELETE identifie tout d'abord le jeu d'entités et la clé d'identité. L'exemple suivant est basé sur le Modèle de vente AdventureWorks Sales Model (EDM). L'URI inclut le jeu d'entités Address
et la clé : "https://localhost:50781/AdvWksSalesS.svc/Address(32523)"
. Si l'entité à supprimer fait partie d'une hiérarchie d'héritage, l'élément de syntaxe __metadata
est requis :
"{__metadata:{Uri:'/Addres(32523/', " +
"Type:'AdventureWorksModel.Address'}}"
Un exemple complet qui utilise le Format JSON (ADO.NET Data Services Framework) pour supprimer un élément de données du jeu d'entités Address
est illustré dans le bloc de code à la fin de cette description.
Le bloc de code à la fin de cette description supprime une entité Address
du service de données qui déploie le AdventureWorksModel
. Une HttpWebRequest r
est créée avec l'URI du type d'entité à supprimer : https://localhost:50781/AdvWksSalesS.svc/Address(32523
, comme paramètre unique de son constructeur.
Le corps de la demande est affecté à une chaîne nommée requestPayload
. La méthode est définie à "DELETE"
. ContentType
est affecté au protocole json
. La ligne r.Accept = "application/json"
indique au serveur qu'il doit renvoyer la réponse éventuelle codée à l'aide du protocole json
.
Si le service est protégé à l'aide d'un modèle d'authentification basé sur le transport, tel que l'Authentification de base HTTP, des informations d'identification peuvent être passées en affectant des informations d'identification à la demande. Pour l'exemple suivant, DefaultCredentials
est utilisé.
La demande r
est mise en forme en tant que texte Unicode. Une variable UTF8Encoding est utilisée pour obtenir la longueur de la demande en octets afin d'écrire des données numériques dans l'objet Stream de la demande. L'objet HttpWebResponse
est affecté en appelant GetResponse
pour la demande. Le code r.GetResponse
envoie les données et obtient la réponse. Un autre objet de flux, rspStm
, est utilisé pour contenir les données retournées par 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();
}
Pour plus d'informations sur les protocoles utilisables avec la méthode DELETE, consultez Méthode DELETE (ADO.NET Data Services Framework).
Voir aussi
Concepts
Méthode DELETE (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 et DELETE (ADO.NET Data Services Framework)