执行使用Windows应用程序在c#HTTP方法
-
18-09-2019 - |
题
有许多网站其中呼吁形式的脚本提交,并使用HTTP POST或GET在参数传递,使用web调试器我发现传递的参数。现在,我希望通过在C#我的Windows应用程序做同样的事情。我怎样才能实现这样的功能?
我目前使用在C#HttpWebRequest和HttpWebResponse类。但它是一种痛苦,因为我有写显式代码的每一页我尝试加载和工作。对于实施例我试图用户名和密码传递给PHP页面,并采取响应,这将发送一个cookie并在返回的网页时,在此基础上我识别,如果用户已经登录与否。
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");
}
这是我的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;
}
我在正确的轨道上?有没有更好的办法做到这一点?
解决方案
您应该使用 System.Net.WebClient 一>
您可以用它来与任何方法和标头的请求,你想,用一个简单的流读得到的结果页。
还有的MSDN页面上一个简单的例子,但使用它的一些示例代码可能是:
WebClient webclient= new WebClient();
using (StreamReader reader = new StreamReader(webclient.OpenRead("http://www.google.com")))
{
string result = reader.ReadToEnd();
// Parse web page here
}
不隶属于 StackOverflow