다음을 통해 공유


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 코드는 데이터를 전송하고 응답을 가져옵니다. 또 다른 스트림 개체인 rspStmGetResponseStream에서 반환하는 데이터를 포함하는 데 사용됩니다.

    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 데이터 서비스 프레임워크)