Télécharger un fichier ou une page HTML avec C# GET et des cookies
Comment downloader en C# une page html ou un fichier
J'ai cherché pendant des heures, pour finalement trouver une classe compliquée qui marchait, mais qui gérait mal les liens... par exemple http://fbiot.free.fr ne pouvait pas être downloadé par cette classe...
Puis, presque par hasard, j'ai trouvé un truc tout simple qui fait partie du framework : WebClient
using System.Net;
...
WebClient oClient=new WebClient();
oClient.DownloadString("http://URL");
On peut aussi passer des paramètres get
oClient.QueryString.Add("nom","valeur");
2 lignes, simples efficace.
public class WebClientExtended : WebClient
{
private CookieContainer myContainer;
private HttpWebRequest myRequest;
private string myMethod;
public string Method
{
get { return myMethod; }
set { myMethod = value; }
}
public CookieContainer Cookies
{
get
{
if (myContainer == null)
{
myContainer = new CookieContainer();
}
return myContainer;
}
set
{
myContainer = value;
}
}
protected override WebRequest GetWebRequest(Uri address)
{
myRequest = (HttpWebRequest)base.GetWebRequest(address);
myRequest.Method = this.Method;
myRequest.CookieContainer = Cookies;
return myRequest;
}
protected override WebResponse GetWebResponse(WebRequest request)
{
return myRequest.GetResponse();
}
protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result)
{
return myRequest.EndGetResponse(result);
}
}
J'ai cherché pendant des heures, pour finalement trouver une classe compliquée qui marchait, mais qui gérait mal les liens... par exemple http://fbiot.free.fr ne pouvait pas être downloadé par cette classe...
Puis, presque par hasard, j'ai trouvé un truc tout simple qui fait partie du framework : WebClient
using System.Net;
...
WebClient oClient=new WebClient();
oClient.DownloadString("http://URL");
On peut aussi passer des paramètres get
oClient.QueryString.Add("nom","valeur");
2 lignes, simples efficace.
public class WebClientExtended : WebClient
{
private CookieContainer myContainer;
private HttpWebRequest myRequest;
private string myMethod;
public string Method
{
get { return myMethod; }
set { myMethod = value; }
}
public CookieContainer Cookies
{
get
{
if (myContainer == null)
{
myContainer = new CookieContainer();
}
return myContainer;
}
set
{
myContainer = value;
}
}
protected override WebRequest GetWebRequest(Uri address)
{
myRequest = (HttpWebRequest)base.GetWebRequest(address);
myRequest.Method = this.Method;
myRequest.CookieContainer = Cookies;
return myRequest;
}
protected override WebResponse GetWebResponse(WebRequest request)
{
return myRequest.GetResponse();
}
protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result)
{
return myRequest.EndGetResponse(result);
}
}
Publicité