2012-05-08 59 views
0

我试图登录到WordPress的后台,使用httwebrequest和C#,但我不能这样做。我通过网络搜索,发现很多人都有同样的问题,但我找不到合适的解决方案。你可以帮我吗?提前致谢。WordPress的登录httpwebrequest

string adres = "http://www.site.com"; 
CookieContainer cookies = new CookieContainer(); 
ServicePointManager.Expect100Continue = false; 

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(adres + "wp-admin/"); 
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"; 
request.Method = "GET"; 
request.CookieContainer = cookies; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
response.Close(); 


//POST 
request = (HttpWebRequest)HttpWebRequest.Create(adres + "/wp-login.php"); 
request.Method = "POST"; 
request.CookieContainer = cookies; 
string password = haslo; 
string loginData = String.Format("loginform=&log=admin&pwd=password&testcookie=1&rememberme=forever&redirect_to=" + Uri.EscapeDataString(adres) + "wp-admin/&wp-submit=" + Uri.EscapeDataString("Zaloguj się")); 

request.ContentType = "application/x-www-form-urlencoded"; 
byte[] loginDataBytes = Encoding.ASCII.GetBytes(loginData); 
Stream postData = request.GetRequestStream(); 
postData.Write(loginDataBytes, 0, loginDataBytes.Length); 
postData.Close(); 
response = (HttpWebResponse)request.GetResponse(); 

// NEXT GET 
request = (HttpWebRequest)HttpWebRequest.Create(adres + "/wp-admin/"); 
request.Method = "GET"; 
request.CookieContainer = cookies; 

HttpWebResponse response1 = (HttpWebResponse)request.GetResponse(); 

Stream response1Stream = response1.GetResponseStream(); 
StreamReader reader1 = new StreamReader(response1Stream); 
string input1 = reader1.ReadToEnd(); 
response1.Close(); 
richTextBox1.Text = input1; 

我无法登录 - >第二个“GET”请求后,我只是获取登录表单,而不是wordpress后台主页。

+1

你有什么错误吗? – Zaki

+0

请尝试更新您的文章,并说明实际发生的情况。 – Tim

+0

我没有得到任何错误,只是我无法登录 - >第二个“GET”请求后,我只是得到登录页面,而不是WordPress后台主页。 – user1382443

回答

0

几个月前,我遇到了同样的问题,在经过艰苦的搜索之后,我发现没有任何东西可以帮助我解决问题。

最后,写了我自己的代码解决了这个问题。它是.NET应用程序和WordPress之间的SSO(单点登录)。

一如既往,它已发布在我的个人博客(对不起,但它是西班牙语)。

我希望它可以帮助你...... http://sordalion.blogspot.com.es/2012/12/sso-aspnet-to-wordpress-aspnet-to.html

0

因此有两个陷阱,一个是由于重定向,登录Cookie是没有确定,第二是由于本地cookie管理器不能够解析收到的Set-Cookies标题中的一些cookie。

要通过WebRequest登录到一个Wordpress帐户,你需要做以下两件事情:

1)禁止通过设置AllowAutoRedirect = false

2对POST请求重定向)从Set-Cookies头手工解析饼干并在POST请求成功后手动将它们添加到cookie容器。