Wordpress login httpwebrequest

本文关键字:httpwebrequest login Wordpress | 更新日期: 2023-09-27 18:33:35

我正在尝试使用httwebrequest和c#登录到wordpress后台,但我做不到。我在网上搜索,发现很多人都有同样的问题,但我找不到正确的解决方案。你可以帮我吗?提前谢谢。

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后台主页。

Wordpress login httpwebrequest

几个月前我遇到了同样的问题,经过艰苦的搜索,我发现没有什么可以帮助我解决它。

最后,编写了我自己的代码来解决问题。它是.NET Application和WordPress之间的SSO(单点登录)。

就像反复出现的那样,它已经发布在我的个人博客上(对不起,但它是西班牙语)。

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

所以有两个陷阱,一个是由于重定向,登录cookie没有设置,第二个是由于本机cookie管理器无法解析收到的Set-Cookies标头中的某些cookie。

要通过WebRequest登录Wordpress帐户,您需要执行以下两件事:

1) 通过设置AllowAutoRedirect = false禁用POST请求的重定向

2) 从 Set-Cookies 标头手动解析 cookie,并在POST请求成功后手动将它们添加到 cookie 容器中。