2009-03-01 5 views

Répondre

155

Vous pouvez télécharger des fichiers avec le 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

A noter: si plus de contrôle est nécessaire, regardez la classe HttpWebRequest (par exemple, pouvoir spécifier l'authentification). – Richard

+1

Oui, HttpWebRequest vous donne plus de contrôle, bien que vous puissiez faire des requêtes POST avec WebClient, en utilisant client.UploadData (uriString, "POST", postParamsByteArray); – CMS

+1

Ne serait-il pas prudent d'attraper WebException autour de cela? Peut-être que c'était supposé. D'autres exceptions ou erreurs doivent être détectées avec cette méthode? –

33

essentiellement:

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

"cm" chemin est le plus récent, proposé en ms site

mais j'eu un problème difficile à résoudre, largeur les deux méthode affichée ici

maintenant je poste solu tion pour tous! problème

: si vous utilisez une URL comme ceci: « www.somesite.it/?p=1500 » dans certains cas, vous obtenez une erreur de serveur interne (500) bien que dans le navigateur Web de cette « www. somesite.it/?p=1500 "fonctionnent parfaitement. solution

: vous devez déplacer des paramètres (oui est facile), le code de travail est:

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

ici la documentation officielle: http://msdn.microsoft.com/en-us/library/system.net.webclient.querystring.aspx

13

Vous pouvez l'obtenir avec:

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

Courte et douce! J'ai trouvé votre suggestion après avoir lu l'exemple de Joe Albahari. LINQPad> Aide> Quoi de neuf et recherchez Cache. – Colin

+7

var html = nouveau System.Net.WebClient(). DownloadString (siteUrl); // besoin de refaire votre client! – user1328350

+4

Est-ce que 'Dispose' le' WebClient'? –

4

Cet article est vraiment vieux (il a 7 ans quand je suis répondre), donc aucune des autres solutions utilisé la nouvelle et recommandée, qui est HttpClient classe.

HttpClient est considérée comme nouvelle API et il devrait remplacer l'ancien WebClient et 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; 
     } 
    } 
} 

pour plus d'informations sur l'utilisation de la classe (en particulier dans les cas async) HttpClient, vous pouvez consulter this question

Questions connexes