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 using
declaraciones 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.HttpClient
que 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
WebRequest
es una clase base abstracta. Así que en realidad no lo usas directamente. Lo usas a través de sus clases derivadas,HttpWebRequest
yFileWebRequest
.Utiliza el método Create de
WebRequest
para crear una instancia deWebRequest
.GetResponseStream
devolucionesdata stream
.También hay
FileWebRequest
yFtpWebRequest
clases queinherit
desdeWebRequest
. Normalmente, solíaWebRequest
, bueno, hacer una solicitud y convertir la devolución a cualquieraHttpWebRequest
,FileWebRequest
oFtpWebRequest
depender de su solicitud. A continuación se muestra un ejemplo:Ejemplo:
Cliente web
WebClient
proporciona operaciones comunessending
yreceiving
datos de un recurso identificado por aURI
. Simplemente, es una abstracción de nivel superior deHttpWebRequest
. Estas "operaciones comunes" es lo que diferenciaWebClient
deHttpWebRequest
, como también se muestra en el ejemplo siguiente:Ejemplo:
También hay
DownloadData
yDownloadFile
operaciones bajoWebClient
instancia. Estas operaciones comunes también simplifican el código de lo que normalmente haríamosHttpWebRequest
. UsandoHttpWebRequest
, tenemos que obtener la respuesta de nuestra solicitud, instanciarStreamReader
para 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.DownloadString
no considera elencoding
el 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 ).