Ich muss einige Aktionen in WordPress Admin-Panel programmgesteuert ausführen, aber nicht verwalten, wie man sich in Wordpress mit C# und HttpWebRequest anmelden. HierWie programmgesteuert bei WordPress anmelden?
ist, was ich tue:
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();
}
Aber leider in Antwort-erhalte ich nur HTML-Quellcode Login-Seite und es scheint, dass Cookies enthalten keine Session-ID. Alle Anfragen, die ich nach diesem Code ausführe, geben auch die HTML-Quelle der Login-Seite zurück, so dass ich davon ausgehen kann, dass sie sich nicht korrekt anmeldet.
Kann jemand mir helfen, dieses Problem zu lösen oder Arbeitsbeispiel zu geben?
Hauptsache, was ich erreichen möchte, ist für neue Bilder in Nextgen Gallery Plugin für Wordpress zu scannen. Gibt es dafür XML-RPC?
Vielen Dank im Voraus.
Einige Code würde nicht wie andere schlecht sein Leute suchen vielleicht auch nach einer Lösung (wie ich). Das ist der Punkt eines Forums ... – C4u
So grausam! Warum ist die Lösung nicht da? –
das ist die akzeptierte antwort? kein Code? – DidIReallyWriteThat