Necesito realizar alguna acción en el panel de administración de WordPress mediante programación, pero no puedo administrar cómo iniciar sesión en Wordpress usando C# y HttpWebRequest.¿Cómo iniciar sesión en wordpress mediante programación?
Aquí es lo que hago:
private void button1_Click(object sender, EventArgs e)
{
string url = "http://localhost/wordpress/wp-login.php";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
CookieContainer cookies = new CookieContainer();
SetupRequest(url, request, cookies);
//request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
//request.Headers["Accept-Language"] = "uk,ru;q=0.8,en-us;q=0.5,en;q=0.3";
//request.Headers["Accept-Encoding"] = "gzip,deflate";
//request.Headers["Accept-Charset"] = "windows-1251,utf-8;q=0.7,*;q=0.7";
string user = "test";
string pwd = "test";
request.Credentials = new NetworkCredential(user, pwd);
string data = string.Format(
"log={0}&pwd={1}&wp-submit={2}&testcookie=1&redirect_to={3}",
user, pwd,
System.Web.HttpUtility.UrlEncode("Log In"),
System.Web.HttpUtility.UrlEncode("http://localhost/wordpress/wp-admin/"));
SetRequestData(request, data);
ShowResponse(request);
}
private static void SetupRequest(string url, HttpWebRequest request, CookieContainer cookies)
{
request.CookieContainer = cookies;
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; uk; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)";
request.KeepAlive = true;
request.Timeout = 120000;
request.Method = "POST";
request.Referer = url;
request.ContentType = "application/x-www-form-urlencoded";
}
private void ShowResponse(HttpWebRequest request)
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
responseTextBox.Text = (((HttpWebResponse)response).StatusDescription);
responseTextBox.Text += "\r\n";
StreamReader reader = new StreamReader(response.GetResponseStream());
responseTextBox.Text += reader.ReadToEnd();
}
private static void SetRequestData(HttpWebRequest request, string data)
{
byte[] streamData = Encoding.ASCII.GetBytes(data);
request.ContentLength = streamData.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(streamData, 0, streamData.Length);
dataStream.Close();
}
Pero, lamentablemente, en responce recibo único código fuente HTML de la página de inicio de sesión y parece que las cookies no contienen ID de sesión. Todas las solicitudes que realizo después de ese código también devuelven la fuente HTML de la página de inicio de sesión, por lo que puedo suponer que no se inicia correctamente.
¿Alguien me puede ayudar a resolver ese problema o dar un ejemplo de trabajo?
Lo principal que quiero lograr es buscar nuevas imágenes en el plugin Nextgen Gallery para Wordpress. ¿Hay forma XML-RPC de hacer eso?
Gracias de antemano.
Parte del código no sería malo como otra las personas quizás también estén buscando una solución (como yo). Ese es el punto de un foro ... – C4u
¡Tan cruel! ¿por qué la solución no está allí? –
esta es la respuesta aceptada? ¿sin código? – DidIReallyWriteThat