Vous pouvez continuer à utiliser WebClient pour POST (au lieu de GET, qui est l'option la plus courante). Verbe HTTP que vous utilisez actuellement avec DownloadString), mais je pense qu'il vous sera plus facile de travailler avec les classes de niveau (légèrement) inférieur WebRequest et WebResponse.
Il y a deux parties à cela - la première consiste à afficher le formulaire de connexion, la seconde à récupérer l'en-tête "Set-cookie" et à le renvoyer au serveur en tant que "Cookie" avec votre demande GET. Le serveur utilisera ce cookie pour vous identifier à partir de maintenant (en supposant qu'il utilise une authentification basée sur les cookies, ce dont je suis assez sûr puisque cette page renvoie un en-tête Set-cookie qui inclut "PHPSESSID").
POSTing vers le formulaire de connexion
Les formulaires de posts sont faciles à simuler, il suffit de formater les données de votre post comme suit :
field1=value1&field2=value2
Utilisation de WebRequest et d'un code que j'ai adapté à partir de Scott Hanselman Voici comment POSTER les données du formulaire dans votre formulaire de connexion :
string formUrl = "http://www.mmoinn.com/index.do?PageModule=UsersAction&Action=UsersLogin"; // NOTE: This is the URL the form POSTs to, not the URL of the form (you can find this in the "action" attribute of the HTML's form tag
string formParams = string.Format("email_address={0}&password={1}", "your email", "your password");
string cookieHeader;
WebRequest req = WebRequest.Create(formUrl);
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(formParams);
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
WebResponse resp = req.GetResponse();
cookieHeader = resp.Headers["Set-cookie"];
Voici un exemple de ce que vous devriez voir dans l'en-tête Set-cookie de votre formulaire de connexion :
PHPSESSID=c4812cffcf2c45e0357a5a93c137642e; path=/; domain=.mmoinn.com,wowmine_referer=directenter; path=/; domain=.mmoinn.com,lang=en; path=/;domain=.mmoinn.com,adt_usertype=other,adt_host=-
Obtenir la page derrière le formulaire de connexion
Vous pouvez maintenant effectuer votre requête GET vers une page pour laquelle vous devez être connecté.
string pageSource;
string getUrl = "the url of the page behind the login";
WebRequest getRequest = WebRequest.Create(getUrl);
getRequest.Headers.Add("Cookie", cookieHeader);
WebResponse getResponse = getRequest.GetResponse();
using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
{
pageSource = sr.ReadToEnd();
}
EDIT :
Si vous avez besoin de voir les résultats du premier POST, vous pouvez récupérer le code HTML qu'il a renvoyé :
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
pageSource = sr.ReadToEnd();
}
Placez ceci directement en dessous de cookieHeader = resp.Headers["Set-cookie"];
puis inspecte la chaîne de caractères contenue dans pageSource.