Il existe de nombreux sites qui appellent un script à la soumission de formulaire et transmettent des paramètres en utilisant HTTP POST ou GET, en utilisant un débogueur Web j'ai trouvé les paramètres transmis. Maintenant, je souhaite faire la même chose à travers mon application Windows en C#. Comment puis-je réaliser une telle fonctionnalité? J'utilise actuellement la classe HttpWebRequest et HttpWebResponse en C#. Mais c'est une douleur car je dois écrire du code explicite pour chaque page que j'essaie de charger et de travailler. Par exemple j'essaye de passer le nom d'utilisateur et le mot de passe à une page de php et en prenant la réponse, qui enverra un cookie et une page en retour, basée sur laquelle j'identifie si l'utilisateur s'est connecté ou pas.effectuer des méthodes http à l'aide de l'application Windows dans C#
HttpWebRequest loginreq = createreq("http://www.indyarocks.com/mobile/index.php");
String logintext = "username=" + TxtUsrname.Text + "&pass=" + TxtPasswd.Password + "&button.x=0&button.y=0";
loginreq.ContentLength = logintext.Length;
StreamWriter writerequest = new StreamWriter(loginreq.GetRequestStream());
writerequest.Write(logintext);
writerequest.Close();
HttpWebResponse getloginpageresponse = (HttpWebResponse)loginreq.GetResponse();
cookie = getloginpageresponse.Cookies[0];
BinaryFormatter bf1 = new BinaryFormatter();
Stream f1 = new FileStream("E:\\cookie.dat", FileMode.OpenOrCreate);
bf1.Serialize(f1, cookie);
f1.Close();
string nexturl = getloginpageresponse.Headers[HttpResponseHeader.Location];
StreamReader readresponse = new StreamReader(getloginpageresponse.GetResponseStream());
if (nexturl == "p_mprofile.php")
{
MessageBox.Show("Login Successful");
GrpMsg.IsEnabled = true;
}
else if (nexturl == "index.php?msg=1")
{
MessageBox.Show("Invalid Credentials Login again");
}
Ceci est ma classe createreq
private HttpWebRequest createreq(string url)
{
HttpWebRequest temp = (HttpWebRequest)WebRequest.Create(url);
temp.Method = "POST";
temp.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.21022; FDM)";
temp.KeepAlive = true;
temp.ContentType = "application/x-www-form-urlencoded";
temp.CookieContainer = new CookieContainer();
temp.AllowAutoRedirect = false;
return temp;
}
Suis-je sur la bonne voie? Y a-t-il une meilleure façon de le faire?
Avez-vous regardé la classe WebClient? Il enveloppe une grande partie de la plomberie impliquée dans les classes HttpWebRequest/Response –