Programmazione dei protocolli innestabili

Le classi astratte WebRequest e WebResponse rappresentano la base per i protocolli innestabili. Grazie alla derivazione di classi specifiche del protocollo da WebRequest e WebResponse, un'applicazione è in grado di richiedere dati da una risorsa Internet e di leggere la risposta senza dover specificare il protocollo utilizzato.

Per creare una classe WebRequest è necessario registrarne il metodo Create. Utilizzare il metodo static RegisterPrefix di WebRequest per registrare una derivazione di WebRequest per la gestione di un gruppo di richieste indirizzate a un particolare schema Internet, a uno schema e a un server oppure a uno schema, a un server e a un percorso. Nell'esempio di codice che segue si illustra come registrare un oggetto FtpWebRequest definito in un altro punto. In questo esempio FtpWebRequestCreator è l'oggetto che implementa il metodo Create con cui viene restituito l'oggetto FtpWebRequest.

Nell'esempio di codice che segue si suppone che sia stato scritto codice aggiuntivo per gestire il protocollo FTP.

WebRequest.RegisterPrefix("ftp", new FtpWebRequestCreator());
WebRequest req = WebRequest.Create("ftp://ftp.contoso.com/");
[Visual Basic]
WebRequest.RegisterPrefix("ftp", New FtpWebRequestCreator())
Dim req As WebRequest = WebRequest.Create("ftp://ftp.contoso.com/")

Nella maggior parte dei casi sarà possibile inviare e ricevere dati utilizzando i metodi e le proprietà della classe WebRequest. Se è tuttavia necessario accedere a proprietà specifiche del protocollo, sarà possibile effettuare il cast di tipo di una WebRequest su un'istanza specifica di classe derivata, come nell'esempio di codice che segue.

HttpWebRequest httpreq = 
   (HttpWebRequest) WebRequest.Create("http://www.contoso.com/");
[Visual Basic]
Dim httpreq As HttpWebRequest = _
   CType(WebRequest.Create("http://www.contoso.com/"), HttpWebRequest)

Per avvalersi dei protocolli innestabili è necessario che le derivazioni di WebRequest offrano una transazione predefinita di richiesta e risposta che non richieda l'impostazione di proprietà specifiche del protocollo. La classe HttpWebRequest, ad esempio, che implementa la classe WebRequest per HTTP, consente di fornire una richiesta GET e di restituire una HttpWebResponse derivata da WebResponse contenente il flusso restituito dal server Internet.

Vedere anche

Derivazione da WebRequest | Derivazione da WebResponse | Accesso a Internet