Запрос DELETE в классе HttpWebRequest (платформа служб данных ADO.NET)
Данные можно удалить из служб данных ADO.NET, используя запрос HTTP DELETE. Запрос DELETE можно применять к наборам сущностей, определяемым ключом, значениями свойств, ссылками и свойствами навигации.
Запрос DELETE для удаления сущности
Данные, необходимые запросу DELETE, форматируются как строка, которая становится частью тела запроса HTTP. Запрос DELETE сначала определяет набор сущностей и ключ удостоверения. Следующий пример основан на Модель AdventureWorks Sales (модель EDM). URI включает набор сущностей Address
и ключ: "https://localhost:50781/AdvWksSalesS.svc/Address(32523)"
. Если удаляемая сущность является частью иерархии наследования, то требуется элемент синтаксиса __metadata
:
"{__metadata:{Uri:'/Addres(32523/', " +
"Type:'AdventureWorksModel.Address'}}"
Полный пример использования Формат JSON (платформа служб данных ADO.NET) для удаления элемента данных из набора сущностей Address
приводится в блоке кода в конце этого описания.
Код блока, приведенного в конце этого описания, удаляет сущность Address
из службы данных, которая выполняет развертывание AdventureWorksModel
. Запрос HttpWebRequest r
создается с URI удаляемого типа сущности: https://localhost:50781/AdvWksSalesS.svc/Address(32523
в качестве единственного параметра его конструктора.
Тело запроса назначается строке с именем requestPayload
. Используется метод "DELETE"
. В качестве ContentType
указывается протокол json
. Строка r.Accept = "application/json"
сообщает серверу о необходимости передать ответ, если он есть, закодированный с помощью протокола json
.
Если служба защищена схемой проверки подлинности на основе транспорта, такой как базовая проверка подлинности HTTP, то учетные данные можно передавать, задавая их запросу. Для следующего примера используется метод DefaultCredentials
.
Запрос r
форматируется как текст в Юникоде. Переменная UTF8Encoding используется для получения длины запроса в байтах, чтобы записать цифровые данные в объект запроса Stream. Объект HttpWebResponse
назначается путем вызова метода GetResponse
для запроса. Код r.GetResponse
передает данные и получает ответ. Другой объект 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).
См. также
Понятия
Метод DELETE (платформа служб данных ADO.NET)
Метод GET в классе HttpWebRequest (платформа служб данных ADO.NET)
Метод PUT в классе HttpWebRequest (платформа служб данных ADO.NET)
Запрос POST в классе HttpWebRequest (платформа служб данных ADO.NET)
PUT, POST и DELETE (платформа служб данных ADO.NET)