HttpWebRequest DELETE (framework di ADO.NET Data Services)

È possibile eliminare dati da ADO.NET Data Services utilizzando una richiesta HTTP DELETE. La richiesta DELETE può essere applicata a set di entità identificati da una chiave, valori di proprietà, collegamenti e proprietà di navigazione.

Richiesta DELETE per la rimozione di un'entità

I dati necessari per la richiesta DELETE vengono formattati come stringa che entra a far parte del corpo della richiesta HTTP. Una richiesta DELETE identifica innanzitutto il set e la chiave di identità. Di seguito viene riportato un esempio basato su Modello Sales di AdventureWorks (EDM). L'URI include il set di entità Address e la chiave "https://localhost:50781/AdvWksSalesS.svc/Address(32523)". Se l'entità da rimuovere fa parte di una gerarchia di ereditarietà, è richiesto l'elemento di sintassi __metadata:

  "{__metadata:{Uri:'/Addres(32523/', " +
      "Type:'AdventureWorksModel.Address'}}"

Nel blocco di codice alla fine di questa descrizione viene visualizzato un esempio completo che utilizza il Formato JSON (framework di ADO.NET Data Services) per rimuovere un elemento di dati dal set di entità Address.

Il codice contenuto nel blocco di codice alla fine di questa descrizione elimina un'entità Address dal servizio dati che distribuisce AdventureWorksModel. Come unico parametro del costruttore viene creata una richiesta HttpWebRequest r con l'URI del tipo di entità da eliminare: https://localhost:50781/AdvWksSalesS.svc/Address(32523.

Il corpo della richiesta viene assegnato a una stringa denominata requestPayload. Il metodo viene impostato su "DELETE". ContentType viene assegnato al protocollo json. La riga r.Accept = "application/json" indica al server di restituire l'eventuale risposta codificata utilizzando il protocollo json.

Se il servizio viene protetto con uno schema di autenticazione basato sul trasporto, quale l'autenticazione di base HTTP, le credenziali possono essere passate come credenziali assegnate alla richiesta. Per l'esempio seguente, vengono utilizzate le credenziali DefaultCredentials.

La richiesta r viene formattata come testo Unicode. Per ottenere la lunghezza della richiesta in byte e scrivere dati digitali nell'oggetto Stream della richiesta viene utilizzata una variabile UTF8Encoding. L'oggetto HttpWebResponse viene assegnato chiamando GetResponse per la richiesta. Il codice r.GetResponse invia i dati e ottiene la risposta. Per contenere i dati restituiti da GetResponseStream viene utilizzato un altro oggetto Stream, rspStm.

    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();
        
    }

Per ulteriori informazioni sui protocolli da utilizzare con il metodo DELETE, vedereMetodo DELETE (framework di ADO.NET Data Services).

Vedere anche

Concetti

Metodo DELETE (framework di ADO.NET Data Services)
HttpWebRequest GET (framework di ADO.NET Data Services)
HttpWebRequest PUT (framework di ADO.NET Data Services)
HttpWebRequest POST (framework di ADO.NET Data Services)
PUT, POST e DELETE (framework di ADO.NET Data Services)