HttpWebRequest DELETE(ADO.NET 데이터 서비스 프레임워크)
HTTP DELETE 요청을 사용하여 ADO.NET 데이터 서비스에서 데이터를 삭제할 수 있습니다. 키, 속성 값, 링크 및 탐색 속성으로 식별되는 엔터티 집합에 DELETE 요청을 적용할 수 있습니다.
엔터티 제거를 위한 DELETE 요청
DELETE 요청에 필요한 데이터는 문자열로 형식이 지정되어 HTTP 요청 본문의 일부가 됩니다. DELETE 요청은 먼저 해당 엔터티 집합과 ID 키를 확인합니다. 다음 예제는 AdventureWorks Sales 모델(EDM)을 기반으로 합니다. URI에는 Address
엔터티 집합과 키가 "https://localhost:50781/AdvWksSalesS.svc/Address(32523)"
와 같이 포함됩니다. 제거할 엔터티가 상속 계층의 일부이면 __metadata
구문 요소가 필요합니다.
"{__metadata:{Uri:'/Addres(32523/', " +
"Type:'AdventureWorksModel.Address'}}"
JSON 형식(ADO.NET 데이터 서비스 프레임워크)을 사용하여 Address
엔터티 집합에서 데이터 항목을 제거하는 전체 예제는 이 문서의 뒷부분에 나오는 코드 블록을 참조하십시오.
이 문서 뒷부분의 코드 블록에 나오는 코드는 AdventureWorksModel
을 배포하는 데이터 서비스에서 Address
엔터티를 삭제합니다. HttpWebRequest r
은 삭제할 엔터티 형식의 URI인 https://localhost:50781/AdvWksSalesS.svc/Address(32523)
를 사용하여 생성자의 단일 매개 변수로 만들어집니다.
요청 본문은 requestPayload
라는 문자열에 할당되고 메서드는 "DELETE"
로 설정됩니다. json
프로토콜에 ContentType
이 할당됩니다. r.Accept = "application/json"
이라는 줄은 응답(있는 경우)을 json
프로토콜을 사용하여 인코딩한 후 돌려보내도록 서버에 알립니다.
서비스가 HTTP 기본 인증 같은 전송 기반 인증 스키마로 보호되는 경우 요청에 자격 증명을 지정하여 인증서를 전달할 수 있습니다. 다음 예제에서는 DefaultCredentials
를 사용합니다.
r
요청은 유니코드 텍스트로 형식이 지정됩니다. UTF8Encoding 변수는 요청의 Stream 개체에 디지털 데이터를 기록하기 위해 요청의 길이(바이트)를 가져오는 데 사용됩니다. 요청에 대해 GetResponse
를 호출하여 HttpWebResponse
개체를 할당합니다. r.GetResponse
코드는 데이터를 전송하고 응답을 가져옵니다. 또 다른 스트림 개체인 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 데이터 서비스 프레임워크)
HttpWebRequest GET(ADO.NET 데이터 서비스 프레임워크)
HttpWebRequest PUT(ADO.NET 데이터 서비스 프레임워크)
HttpWebRequest POST(ADO.NET 데이터 서비스 프레임워크)
PUT, POST 및 DELETE(ADO.NET 데이터 서비스 프레임워크)