C# 在c中使用windows应用程序执行http方法#

C# 在c中使用windows应用程序执行http方法#,c#,httpwebrequest,httpwebresponse,windows,C#,Httpwebrequest,Httpwebresponse,Windows,有许多站点在表单提交时调用脚本,并使用HTTPPOST或GET传递参数,使用web调试器我发现传递的参数。现在我希望通过我的Windows应用程序在C#中做同样的事情。如何实现这样的功能 我目前正在C#中使用HttpWebRequest和HttpWebResponse类。但这是一种痛苦,因为我必须为我尝试加载和工作的每个页面编写显式代码。例如,我试图将用户名和密码传递到一个php页面,并获取响应,响应将发送一个cookie和一个页面作为回报,根据该响应我确定用户是否已登录 HttpWebRequ

有许多站点在表单提交时调用脚本,并使用HTTPPOST或GET传递参数,使用web调试器我发现传递的参数。现在我希望通过我的Windows应用程序在C#中做同样的事情。如何实现这样的功能

我目前正在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;
        }
我走对了吗?有更好的方法吗?

你应该使用

您可以使用它使用您想要的任何方法和头发出请求,并通过简单的流读取获得结果页面

MSDN页面上有一个简单的示例,但使用它的一些示例代码可能如下所示:

WebClient webclient= new WebClient();

using (StreamReader reader = new StreamReader(webclient.OpenRead("http://www.google.com")))
{
        string result = reader.ReadToEnd();
         // Parse web page here
}

你看过WebClient类了吗?它包含了HttpWebRequest/Response类中涉及的许多管道。我在哪里可以找到更多System.Net.WebClient实现的示例。您指的是更多关于使用它的示例?或者它是如何编程的?它是如何编程的,我想我可以在MSDN上找到,但是我想知道更多使用它的例子。