Pregunta

Me parece que la mayor parte de lo que se puede lograr con HttpWebRequest/Response también se puede lograr con el WebClient clase.Leí en alguna parte que WebClient es un contenedor de alto nivel para WebRequest/Response.
Hasta ahora no veo nada que se pueda lograr con HttpWebRequest/Response que no se puede lograr con WebClient, ni donde HttpWebRequest/Response le brindará un control más "especificado".

¿Cuándo debo utilizar WebClient y cuándo? HttpWebRequest/Response?(Obviamente, HttpWebRequest/Response son específicos de HTTP.)

Si HttpWebRequest/Response son de nivel inferior entonces WebClient, ¿Qué puedo lograr con HttpWebRequest/Response que no puedo lograr con WebClient?

¿Fue útil?

Solución

El uso de HttpWebRequest le da más control sobre la solicitud. Se pueden poner cookies, cabeceras, protocolo, etc ... En la respuesta, también puede recuperar las cookies y las cabeceras

Otros consejos

HttpWebRequest expone muchas más cosas que le permiten un control detallado del protocolo, por ejemplo:si desea utilizar Keep-Alive, qué grupo de conexiones utilizar, si almacenar en búfer las escrituras o no, etc.

WebClient no expone todos ellos (aunque puede subclasificar desde WebClient y obtener acceso al objeto Solicitud subyacente).

WebClient es útil para aquellas situaciones en las que solo desea realizar una operación (por ejemplo:POST/GET/Carga de formulario) y no puedo molestarme en crear y administrar el HttpWebRequest, RequestStream, HttpWebResponse, y flujo de respuesta.

Desde el blog de Tim Heuer - http://timheuer.com/blog/archive/2008/03/14/calling-web-services-with-silverlight-2.aspx

En lugar de Silverlight que querrá utilizar WebClient o HttpWebRequest. ¿Cual es la diferencia? Aquí está la versión timheuer. WebClient es una implementación más sencilla de hacer peticiones GET con mucha facilidad y obtener una secuencia de respuesta. HttpWebRequest es grande para cuando se necesita un poco más de control granular sobre la solicitud, tiene que enviar los colectores u otras personalizaciones.

El cliente Web clase se ejecuta en el subproceso de interfaz de usuario, por lo que la interfaz de usuario no es sensible, mientras que los datos están siendo descargados de Internet. Por otro lado, el HttpWebRequest clase no bloquea el subproceso de interfaz de usuario, y su aplicación es sensible. Por lo tanto, en aplicaciones donde una gran cantidad de datos se va a descargar desde Internet o si la fuente de los datos es lenta para el acceso, se debe utilizar la clase HttpWebRequest; en los demás casos, se debe utilizar la clase WebClient.

Una cosa más HttpWebrquest permite la compresión pero Net.WebClient clase no soporta la compresión HTTP

Otra desventaja de WebClient es que ignora el valor de la ContentType charset HTTP cuando lo utiliza para obtener el texto de respuesta. Usted tiene que establecer explícitamente la codificación a través de la propiedad Encoding.

El "HtttpWebRequest" es obsoleta en .NET 4.5. Ahora bien, esta clase es única interna.

Un ejemplo:Publicar datos y recuperar datos procesados ​​en un ciclo de solicitud/respuesta parece imposible con WebClient, pero puede hacerlo con HtttpWebRequest.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top