C# 使用Webrequests登录xenForo论坛?

C# 使用Webrequests登录xenForo论坛?,c#,login,web,httpwebrequest,forum,C#,Login,Web,Httpwebrequest,Forum,我正在尝试使用C#中的webrequest登录xenForo论坛,但我似乎无法让它正常工作,因此非常感谢您的帮助 我使用Fiddler获取登录时发送的POST数据,这是我获取的原始POST数据 POST http://www.----------.com/login/login HTTP/1.1 Host: www.----------.com Connection: keep-alive Content-Length: 109 Cache-Control: max-age=0 Origin:

我正在尝试使用C#中的webrequest登录xenForo论坛,但我似乎无法让它正常工作,因此非常感谢您的帮助

我使用Fiddler获取登录时发送的POST数据,这是我获取的原始POST数据

POST http://www.----------.com/login/login HTTP/1.1
Host: www.----------.com
Connection: keep-alive
Content-Length: 109
Cache-Control: max-age=0
Origin: http://www.----------.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://www.----------.com/login/login
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: xf_session=0c4e132b44ce81bdf93e70c57fe17eb6; __cfduid=d43498195638b2afe52ebaa9e1f97b8b31342586809; __cfduid=d43498195638b2afe52ebaa9e1f97b8b31342586809

login=USERNAME&register=0&password=PASSWORD&remember=1&cookie_check=1&redirect=forum%2F&_xfToken=
所以在那之后,我创建了一个webrequest,试图复制这个,这就是我目前拥有的

private void button1_Click(object sender, EventArgs e)
        {
        try
        {
        HttpWebRequest http = WebRequest.Create("http://www.----------.com/login/login") as HttpWebRequest;
        http.KeepAlive = true;
        http.Method = "POST";
        http.AllowAutoRedirect = true;
        http.ContentType = "application/x-www-form-urlencoded";
        string postData="login=" + usernameBox.Text + "&register=0&password=" + passwordBox.Text + "&remember=1&cookie_check=1&redirect=forum%2F&_xfToken=";
        byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData);
        http.ContentLength = dataBytes.Length;
        using (Stream postStream = http.GetRequestStream())
        {
        postStream.Write(dataBytes, 0, dataBytes.Length);
        }
        HttpWebResponse httpResponse = http.GetResponse() as HttpWebResponse;
        int y = (int)httpResponse.StatusCode;
        MessageBox.Show(Convert.ToString(y), "Response Code Debug");
        foreach(Cookie c in httpResponse.Cookies)
         {
         MessageBox.Show(c.Name + " = " + c.Value, "Cookie Debug");
         }
        http = WebRequest.Create("http://www.----------.com/forum") as HttpWebRequest;
        http.CookieContainer = new CookieContainer();
        http.CookieContainer.Add(httpResponse.Cookies);
        http.AllowAutoRedirect=false;
        HttpWebResponse httpResponse2 = http.GetResponse() as HttpWebResponse;
        }
        catch (Exception ex)
        {
        MessageBox.Show(ex.Message, "Catch Debug");
        try
         {
         Clipboard.SetText(ex.Message);
         }
        catch
         {
         }
        }
忽略其中的一些,我使用MessageBox尝试更精确地了解请求发生了什么,但不幸的是,这并没有起到多大的作用。这是我第一次处理webrequests,如果这只是一个愚蠢的错误,我向您道歉

我只需要能够知道登录是否成功。另外,如果你需要一个xenForo站点来使用,那就是我正在尝试使用的站点

正如我之前所说的,我们非常感谢任何和所有的帮助。谢谢。:)

您必须发送此邮件:

cookie_check=0
不是这个:

cookie_check=1
Xenforo CMS不会检查Cookie。它应该有帮助:)