J'ai besoin d'effectuer certaines actions dans le panneau d'administration wordpress par programmation, mais je n'arrive pas à gérer comment me connecter à Wordpress en utilisant C# et HttpWebRequest.Comment se connecter à wordpress par programme?
Voici ce que je fais:
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();
}
Mais malheureusement responce je ne reçois que le code source HTML de la page de connexion et il semble que les cookies ne contiennent pas l'ID de session. Toutes les demandes que j'effectue après ce code retournent aussi la source HTML de la page de connexion, donc je peux supposer qu'il ne se connecte pas correctement.
Quelqu'un peut-il m'aider à résoudre ce problème ou donner un exemple de travail?
La principale chose que je veux atteindre est la recherche de nouvelles images dans le plugin Nextgen Gallery pour Wordpress. Y a-t-il une façon XML-RPC de le faire?
Merci d'avance.
Une partie du code wouldnt être mauvais que d'autres les gens cherchent peut-être aussi une solution (comme moi). C'est le point d'un forum ... – C4u
Alors cruel! pourquoi la solution n'est pas là? –
est la réponse acceptée? pas de code? – DidIReallyWriteThat