Compartir a través de


Derivar de WebRequest

WebRequest es una clase base abstracta que proporciona los métodos y propiedades básicos para crear un controlador de solicitudes específico de un protocolo que sigue el modelo de protocolo conectable de .NET Framework. Las aplicaciones que utilizan la clase WebRequest pueden solicitar datos mediante un protocolo admitido sin necesidad de especificar el protocolo utilizado.

Para que una clase de un protocolo específico se pueda utilizar como protocolo conectable, se deben cumplir dos criterios: la clase debe implementar la interfaz IWebRequestCreate y debe registrarse con el método WebRequest.RegisterPrefix. Para proporcionar la interfaz conectable, la clase debe reemplazar todos los métodos y propiedades abstractos de WebRequest.

Las instancias de WebRequest sólo se pueden usar una vez; si desea realizar otra solicitud, debe crear una nueva instancia de WebRequest. La clase WebRequest admite la interfaz ISerializable para permitir que los programadores serialicen una clase WebRequest de plantilla y, después, reconstruyan la plantilla para otras solicitudes.

Create (Método de IWebRequest)

El método Create sirve para inicializar una nueva instancia de la clase específica del protocolo. Al crear una nueva clase WebRequest, el método WebRequest.Create coincide con el identificador URI solicitado con los prefijos URI registrados en el método RegisterPrefix. El método Create del descendiente correcto específico del protocolo debe devolver una instancia inicializada del descendiente que pueda realizar una transacción estándar de solicitud y respuesta para el protocolo sin que sea necesario modificar ningún campo específico del protocolo en cuestión.

ConnectionGroupName (Propiedad)

La propiedad ConnectionGroupName se utiliza para dar nombre a un grupo de conexiones con un recurso, de forma que se puedan llevar a cabo varias solicitudes mediante una sola conexión. Para implementar el uso compartido de la conexión, debe utilizar un método específico del protocolo para la agrupación y asignación de conexiones. Por ejemplo, la clase ServicePointManager que se proporciona implementa el uso compartido de la conexión para la clase HttpWebRequest. La clase ServicePointManager crea una instancia de ServicePoint que proporciona una conexión con un servidor específico para cada grupo de conexiones.

ContentLength (Propiedad)

La propiedad ContentLength especifica el número de bytes de datos que se enviarán al servidor al cargar datos.

En general, si se establece un valor mayor que cero en la propiedad ContentLength, el valor de la propiedad Method se debe establecer para indicar que tiene lugar una carga.

ContentType (Propiedad)

La propiedad ContentType proporciona la información especial que el protocolo requiere que se envíe al servidor para identificar el tipo de contenido enviado. En general, corresponde al tipo de contenido MIME de los datos cargados.

Credentials (Propiedad)

La propiedad Credentials contiene la información necesaria para autenticar la solicitud en el servidor. Se deben implementar los detalles del proceso de autenticación del protocolo. La clase AuthenticationManager se encarga de autenticar las solicitudes y proporcionar un símbolo de autenticación. La clase que proporcione las credenciales utilizadas por el protocolo debe implementar la interfaz ICredentials.

Headers (Propiedad)

La propiedad Headers contiene una colección arbitraria de pares de nombre y valor de metadatos asociados con la solicitud. En la propiedad Headers se puede incluir cualquier metadato necesario por el protocolo que pueda expresarse como un par de nombre y valor. En general, esta información se debe establecer antes de llamar a los métodos GetRequestStream o GetResponse; una vez realizada la solicitud, los metadatos se consideran de sólo lectura.

No es necesario utilizar la propiedad Headers para emplear metadatos de encabezado. Los metadatos específicos de un protocolo se pueden exponer como propiedades; por ejemplo, la propiedad HttpWebRequest.UserAgent expone el encabezado HTTP User-Agent. Cuando expone metadatos de encabezado como una propiedad, no debe permitir que se establezca la misma propiedad mediante Headers.

Method (Propiedad)

La propiedad Method contiene el verbo o la acción que la solicitud pide que realice el servidor. El valor predeterminado de la propiedad Method debe permitir una acción estándar de solicitud y respuesta sin requerir que se establezcan propiedades específicas del protocolo. Por ejemplo, el valor predeterminado del método HttpWebResponse es GET, que solicita un recurso a un servidor Web y devuelve la respuesta.

En general, si en la propiedad Method se establece un verbo o acción que indique que tiene lugar una carga, el valor de la propiedad ContentLength debe ser mayor de cero.

PreAuthenticate (Propiedad)

En las aplicaciones, la propiedad PreAuthenticate se establece para indicar que se debe enviar información de autenticación con la solicitud inicial, en lugar de esperar un desafío de autenticación. La propiedad PreAuthenticate sólo tiene sentido si el protocolo admite el envío de credenciales de autenticación con la solicitud inicial.

Proxy (Propiedad)

La propiedad Proxy contiene una interfaz de IWebProxy que se utiliza para tener acceso al recurso solicitado. La propiedad Proxy sólo tiene sentido si el protocolo admite solicitudes con proxy. Si el protocolo requiere un proxy, se debe establecer el predeterminado.

En algunos entornos, por ejemplo detrás de un servidor de seguridad corporativo, se puede requerir que el protocolo utilice un proxy. En ese caso, la interfaz IWebProxy se debe implementar para crear una clase de proxy válida para el protocolo.

RequestUri (Propiedad)

La propiedad RequestUri contiene el identificador URI que se pasó al método WebRequest.Create. Es de sólo lectura y no se puede cambiar después de crear la clase WebRequest. Si el protocolo permite la redirección, la respuesta puede venir de un recurso identificado por un identificador URI diferente. Si es necesario proporcionar acceso al identificador URI que respondió, se debe proporcionar una propiedad adicional que contenga dicho identificador URI.

Timeout (Propiedad)

La propiedad Timeout contiene la cantidad de tiempo, en milisegundos, que se debe esperar hasta que se agote el tiempo de espera de la solicitud y se inicie una excepción. Timeout sólo se aplica a solicitudes sincrónicas realizadas con el método GetResponse; para cancelar una solicitud pendiente, las solicitudes asincrónicas deben utilizar el método Abort.

El uso de la propiedad Timeout sólo tiene sentido si la clase específica del protocolo implementa un proceso de tiempo de espera.

Abort (Método)

El método Abort cancela una solicitud asincrónica pendiente realizada al servidor. Después de cancelar la solicitud, al llamar a GetResponse, BeginGetResponse, EndGetResponse, GetRequestStream, BeginGetRequestStream o EndGetRequestStream se iniciará una excepción WebException con el valor de la propiedad Status establecido a RequestCanceled.

BeginGetRequestStream y EndGetRequestStream (Métodos)

El método BeginGetRequestStream inicia una solicitud asincrónica de la secuencia que se utiliza para cargar datos en el servidor. El método EndGetRequestStream finaliza la solicitud asincrónica y devuelve la secuencia solicitada. Estos métodos implementan el método GetRequestStream mediante el modelo asincrónico estándar de .NET Framework.

BeginGetResponse y EndGetResponse (Métodos)

El método BeginGetResponse inicia el envío de una solicitud asincrónica a un servidor. El método EndGetResponse finaliza la solicitud asincrónica y devuelve la respuesta solicitada. Estos métodos implementan el método GetResponse mediante el modelo asincrónico estándar de .NET Framework.

GetRequestStream (Método)

El método GetRequestStream devuelve una secuencia que se utiliza para escribir datos en el servidor solicitado. La secuencia devuelta debe ser de sólo escritura y no debe realizar búsquedas; está pensada como una secuencia unidireccional de datos que se escriben en el servidor. La secuencia devuelve "false" para las propiedades CanRead y CanSeek, y "true" para la propiedad CanWrite.

En general, el método GetRequestStream abre una conexión con el servidor y, antes de devolver la secuencia, envía información de encabezado que indica que se van a enviar datos al servidor. Como GetRequestStream inicia la solicitud, generalmente no se permite establecer las propiedades Header o la propiedad ContentLength después de llamar a GetRequestStream.

GetResponse (Método)

El método GetResponse devuelve un descendiente específico del protocolo de la clase WebResponse que representa la respuesta del servidor. A menos que la solicitud ya haya sido iniciada por el método GetRequestStream, el método GetResponse crea una conexión con el recurso identificado en RequestUri, envía información de encabezado que indica el tipo de solicitud realizada y, a continuación, recibe la respuesta del recurso.

Después de llamar al método GetResponse, todas las propiedades se deben considerar de sólo lectura. Las instancias de WebRequest sólo se pueden usar una vez; si desea realizar otra solicitud, debe crear una nueva instancia de WebRequest.

El método GetResponse se encarga de crear un descendiente correcto de WebResponse que contenga la respuesta entrante.

Vea también

Programar protocolos conectables | Derivar de WebResponse | WebRequest (Clase) | HttpWebRequest (Clase) | FileWebRequest (Clase)