net example create asp c# .net httpwebrequest webclient

example - request en c#



¿Qué diferencia hay entre las clases WebClient y HTTPWebRequest en.NET? (3)

Sé que es demasiado tiempo para responder, pero solo como un propósito de información para futuros lectores:

WebRequest

System.Object System.MarshalByRefObject System.Net.WebRequest

WebRequest es una clase base abstracta. Entonces realmente no lo usas directamente. Lo usas a través de sus clases derivadas: HttpWebRequest y FileWebRequest .

Utiliza el método Create de WebRequest para crear una instancia de WebRequest . GetResponseStream devuelve data stream .

También hay clases FileWebRequest y FtpWebRequest que inherit de WebRequest . Normalmente, usted usaría WebRequest para, bueno, hacer una solicitud y convertir el retorno a HttpWebRequest , FileWebRequest o FtpWebRequest , dependiendo de su solicitud. A continuación hay un ejemplo:

Ejemplo:

var _request = (HttpWebRequest)WebRequest.Create("http://stackverflow.com"); var _response = (HttpWebResponse)_request.GetResponse();

WebClient

System.Object System.MarshalByRefObject System.ComponentModel.Component System.Net.WebClient

WebClient proporciona operaciones comunes para sending y receiving datos de un recurso identificado por un URI . Simplemente, es una abstracción de alto nivel de HttpWebRequest . Estas ''operaciones comunes'' son las que diferencian a WebClient de HttpWebRequest , como también se muestra en el ejemplo a continuación:

Ejemplo:

var _client = new WebClient(); var _stackContent = _client.DownloadString("http://stackverflow.com");

También hay operaciones DownloadData y DownloadFile en la instancia de WebClient . Estas operaciones comunes también simplifican el código de lo que normalmente haríamos con HttpWebRequest . Usando HttpWebRequest , tenemos que obtener la respuesta de nuestra solicitud, instanciar StreamReader para leer la respuesta y, finalmente, convertir el resultado al tipo que esperemos. Con WebClient , simplemente llamamos a DownloadData, DownloadFile or DownloadString .

Sin embargo, tenga en cuenta que WebClient.DownloadString no considera la encoding del recurso que solicita. Entonces, probablemente terminarías recibiendo caracteres extraños si no especificas ni codificas.

NOTA: Básicamente, " WebClient toma pocas líneas de código en comparación con Webrequest ".

¿Qué diferencia hay entre las clases WebClient y HttpWebRequest en .NET? Ambos hacen cosas muy similares. De hecho, ¿por qué no se fusionaron en una clase (demasiados métodos / variables, etc. pueden ser una razón, pero hay otras clases en .NET que rompe esa regla).

Gracias.


También WebClient no tiene propiedad de tiempo de espera. Y ese es el problema, porque el valor predeterminado es de 100 segundos y eso es demasiado para indicar si no hay conexión a Internet.

La solución para ese problema está aquí https://.com/a/3052637/1303422


WebClient es una abstracción de alto nivel construida sobre HttpWebRequest para simplificar las tareas más comunes. Por ejemplo, si desea obtener el contenido de una HttpWebResponse, debe leer la secuencia 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, simplemente hace DownloadString :

var client = new WebClient(); var content = client.DownloadString("http://example.com");

Nota: omití las declaraciones de using de ambos ejemplos para abreviar. Debería tener cuidado de deshacerse de sus objetos de solicitud web correctamente.

En general, WebClient es bueno para solicitudes sencillas rápidas y sucias, y HttpWebRequest es útil cuando necesita más control sobre la solicitud completa.