Compartir a través de


Programar protocolos conectables

Las clases abstractas WebRequest y WebResponse proporcionan la base para los protocolos conectables. Si una aplicación deriva de las clases específicas para protocolo WebRequest y WebResponse, puede solicitar datos de un recurso de Internet y leer la respuesta sin necesidad de especificar el protocolo que se está utilizando.

Antes de crear una instancia de WebRequest, se debe registrar su método Create. Se ha de utilizar el método estático RegisterPrefix de WebRequest para registrar un descendiente de WebRequest si se desea controlar un conjunto de solicitudes a un servicio de Internet concreto; a un servicio y un servidor; o a un servicio, un servidor y una ruta de acceso. El ejemplo de código siguiente muestra cómo se registra un objeto FtpWebRequest que está definido en otra parte. En este ejemplo, FtpWebRequestCreator es el objeto que implementa el método Create, que devuelve el objeto FtpWebRequest.

En el siguiente ejemplo de código se supone que se ha escrito código adicional para controlar el protocolo 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/")

En la mayoría de los casos se podrán enviar y recibir datos utilizando los métodos y las propiedades de la clase WebRequest. Sin embargo, si se necesita acceso a propiedades específicas para protocolo, se puede cambiar el tipo de WebRequest a una instancia concreta de clase derivada, como en el ejemplo de código siguiente.

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

Para aprovechar al máximo los protocolos conectables, los descendientes de WebRequest deben proporcionar una transacción predeterminada de solicitudes y respuestas que no requiera el establecimiento de propiedades específicas para protocolo. Por ejemplo, la clase HttpWebRequest, que implementa la clase WebRequest para HTTP, proporciona una solicitud GET y devuelve una clase HttpWebResponse derivada de WebResponse que contiene la secuencia devuelta desde el servidor de Internet.

Vea también

Derivar de WebRequest | Derivar de WebResponse | Acceso a Internet