2012-07-18 90 views
0

我想在C#中使用webrequest登录到xenForo论坛,但我似乎无法让它正常工作,所以任何帮助将不胜感激。C#登录xenForo论坛使用Webrequests?

我用小提琴手得到,当我登录,这是原始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 
     { 
     } 
     } 

只是忽略了一些,我是用消息框,试图弄清楚什么是更精确回事请求,但它并没有真的非常不幸的帮助。这是我第一次使用webrequests,所以我很抱歉,如果它只是某种愚蠢的错误。

我只需要能够找出登录是否成功。此外,如果您需要使用xenForo网站,只需使用http://www.shadygamer.com这是我正在尝试使用的网站。

正如我前面所说,任何和所有的帮助表示赞赏。谢谢。 :)

回答

1

你要送这样的:

cookie_check=0 

不是这个:

cookie_check=1 

Xenforo CMS不会检查饼干。它应该帮助:)。