WebClient es una abstracción de nivel superior construida sobre HttpWebRequest para simplificar las tareas más comunes. Por ejemplo, si desea obtener el contenido de un HttpWebResponse, debe leer el flujo de respuesta:
var http = (HttpWebRequest)WebRequest.Create("http://example.com");
var response = http.GetResponse();
var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();
Con WebClient, solo haces DownloadString:
var client = new WebClient();
var content = client.DownloadString("http://example.com");
Nota: omití las usingdeclaraciones de ambos ejemplos por brevedad. Definitivamente, debe tener cuidado de deshacerse de sus objetos de solicitud web correctamente.
En general, WebClient es bueno para solicitudes simples rápidas y sucias y HttpWebRequest es bueno para cuando necesita más control sobre toda la solicitud.
ServicePointManager.Expect100Continue = false, hacer otras cosas no estándar y tener muchas peculiaridades e idiosincrasias. Comencé RestSharp para ayudar a suavizar esos problemas.HttpClientque viene con .NET 4.5 que puede (o puede que no) resolver algunas de las molestias anteriores ...using (WebClient client = new WebClient())Además, WebClient no tiene propiedad de tiempo de espera. Y ese es el problema, porque el valor predeterminado es 100 segundos y eso es demasiado para indicar si no hay conexión a Internet.
La solución para ese problema está aquí https://stackoverflow.com/a/3052637/1303422
fuente
Sé que es demasiado tiempo para responder, pero solo como un propósito de información para futuros lectores:
WebRequest
El
WebRequestes una clase base abstracta. Así que en realidad no lo usas directamente. Lo usas a través de sus clases derivadas,HttpWebRequestyFileWebRequest.Utiliza el método Create de
WebRequestpara crear una instancia deWebRequest.GetResponseStreamdevolucionesdata stream.También hay
FileWebRequestyFtpWebRequestclases queinheritdesdeWebRequest. Normalmente, solíaWebRequest, bueno, hacer una solicitud y convertir la devolución a cualquieraHttpWebRequest,FileWebRequestoFtpWebRequestdepender de su solicitud. A continuación se muestra un ejemplo:Ejemplo:
Cliente web
WebClientproporciona operaciones comunessendingyreceivingdatos de un recurso identificado por aURI. Simplemente, es una abstracción de nivel superior deHttpWebRequest. Estas "operaciones comunes" es lo que diferenciaWebClientdeHttpWebRequest, como también se muestra en el ejemplo siguiente:Ejemplo:
También hay
DownloadDatayDownloadFileoperaciones bajoWebClientinstancia. Estas operaciones comunes también simplifican el código de lo que normalmente haríamosHttpWebRequest. UsandoHttpWebRequest, tenemos que obtener la respuesta de nuestra solicitud, instanciarStreamReaderpara leer la respuesta y finalmente, convertir el resultado al tipo que esperamos. ConWebClient, simplemente llamamosDownloadData, DownloadFile or DownloadString.Sin embargo, tenga en cuenta que
WebClient.DownloadStringno considera elencodingel recurso que está solicitando. Por lo tanto, probablemente terminaría recibiendo caracteres extraños si no especifica y codifica.NOTA: Básicamente " WebClient toma pocas líneas de código en comparación con Webrequest "
fuente
webClient.UploadData(url, "POST", bytes)para especificar el método (ver documentos de MSDN ).