2010-04-12 27 views

Respuesta

23
string html = new WebClient().DownloadString("http://twitter.com"); 

Y ahora con asíncrono/aguardan picor en C# 5

string html = await new WebClient().DownloadStringTaskAsync("http://github.com"); 
+0

Aparece el error "; esperado" en esa segunda línea. Uso VS2012 pero parece que esperar no funciona. Si intento enhebrar html = await wc.DownloadStringTaskAsync ("link"); Obtengo: "Error El operador 'aguardar' solo se puede usar con un método asíncrono ..." ¿Debo agregar alguna referencia al proyecto? – grabah

+1

No pretendo que esta respuesta suene como snark, aunque entiendo que puede aparecer de esa manera; pero el mensaje de error dice exactamente cuál es la resolución :) el método que contiene esa línea debe decorarse con la palabra clave "async". –

10

Tenga una mirada en WebClient.DownloadString:

using (WebClient wc = new WebClient()) 
{ 
    string html = wc.DownloadString(address); 
} 

Puede utilizar WebClient.DownloadStringAsync o una BackgroundWorker para descargar el archivo sin bloquear la interfaz de usuario.

+1

Webclient es un IDisposable, así que no olvide el bloque 'using'. –

+0

joel me puede explicar ese comentario –

+0

@every_answer_gets_a_point: Joel Coehoorn se refiere al bloque 'using' que está presente en mi respuesta, pero no en la respuesta de Joel Martinez. Como WebClient implementa la interfaz IDisposable, el bloque 'using' debe estar presente. – dtb

4
var req = WebRequest.Create("http://www.dannythorpe.com"); 
req.BeginGetResponse(r => 
{ 
    var response = req.EndGetResponse(r); 
    var stream = response.GetResponseStream(); 
    var reader = new StreamReader(stream, true); 
    var str = reader.ReadToEnd(); 
    Console.WriteLine(str); 
}, null); 
+0

gracias, pero ¿por qué no piensas que la respuesta de Joel es buena? –

+2

No tengo ninguna opinión sobre la solución de Joel. Nunca escuché hablar de WebClient.DownloadString antes de esta publicación. Este es el código que uso. WebClient.DownloadString parece más fácil de usar, pero puede no proporcionar el mismo nivel de control (manejo de errores, etc.) que realizar los pasos por separado. (Joel y yo compusimos y publicamos simultáneamente) – dthorpe

Cuestiones relacionadas