2009-03-01 17 views

Respuesta

155

Puede descargar archivos con el WebClient class:

using System.Net; 
//... 
using (WebClient client = new WebClient()) // WebClient class inherits IDisposable 
{ 
    client.DownloadFile("http://yoursite.com/page.html", @"C:\localfile.html"); 

    // Or you can get the file content without saving it: 
    string htmlCode = client.DownloadString("http://yoursite.com/page.html"); 
    //... 
} 
+0

Debe tener en cuenta: si se necesita más control, mire la clase HttpWebRequest (por ejemplo, puede especificar la autenticación). – Richard

+1

Sí, HttpWebRequest le brinda más control, aunque puede realizar solicitudes POST con WebClient, utilizando client.UploadData (uriString, "POST", postParamsByteArray); – CMS

+1

¿No sería prudente detectar WebException al respecto? Tal vez eso fue asumido. Cualquier otra excepción o error debe ser capturado con este método? –

33

básicamente:

using System.Net; 
using System.Net.Http; // in LINQPad, also add a reference to System.Net.Http.dll 

WebRequest req = HttpWebRequest.Create("http://google.com"); 
req.Method = "GET"; 

string source; 
using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream())) 
{ 
    source = reader.ReadToEnd(); 
} 

Console.WriteLine(source); 
10

manera "CMS" es la más reciente, se sugiere en la página web ms

pero tuve un problema difícil de resolver, ancho ambos método publicado aquí

ahora publico solu ¡para todos!

problema: si utiliza una URL como esta: "www.somesite.it/?p=1500" en algunos casos se produce un error interno del servidor (500) aunque en este navegador web "www. somesite.it/?p=1500 "funciona perfectamente.

solución: tiene que salir parámetros (sí es fácil), el código de trabajo es:

using System.Net; 
//... 
using (WebClient client = new WebClient()) 
{ 
    client.QueryString.Add("p", "1500"); //add parameters 
    string htmlCode = client.DownloadString("www.somesite.it"); 
    //... 
} 

aquí la documentación oficial: http://msdn.microsoft.com/en-us/library/system.net.webclient.querystring.aspx

13

lo puede conseguir con:

var html = new System.Net.WebClient().DownloadString(siteUrl) 
+0

¡Corto y dulce! Encontré tu sugerencia después de leer el ejemplo de Joe Albahari. LINQPad> Ayuda> Novedades y búsqueda de caché. – Colin

+7

var html = new System.Net.WebClient(). DownloadString (siteUrl); // necesito actualizar tu cliente! – user1328350

+4

¿Eso 'Dispose' the' WebClient'? –

4

Esta publicación es muy antigua (tiene 7 años cuando estoy respondiéndole), entonces ninguna de las otras soluciones usó la nueva y recomendada manera, que es la clase HttpClient.

HttpClient se considera nueva API y debe reemplazar el anterior WebClient y WebRequest

string url = "page url"; 

using (HttpClient client = new HttpClient()) 
{ 
    using (HttpResponseMessage response = client.GetAsync(url).Result) 
    { 
     using (HttpContent content = response.Content) 
     { 
      string result = content.ReadAsStringAsync().Result; 
     } 
    } 
} 

para obtener más información sobre cómo utilizar la clase HttpClient (especialmente en los casos asincrónicos), puede hacer referencia this question

Cuestiones relacionadas