title: How to login to wordpress programmatically?
body: <p>I need to perform some action in wordpress admin panel programmatically but can't manage how to login to Wordpress using C# and HttpWebRequest.</p>
  
  <p>Here is what I do:</p>
  
  <pre><code>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}&amp;pwd={1}&amp;wp-submit={2}&amp;testcookie=1&amp;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();
          }
  </code></pre>
  
  <p>But unfortunately in responce I get only HTML source code of login page and it seems that cookies don't contain session ID. All requests which I perform after that code also return HTML source of login page so I can assume that it does not login correctly.</p>
  
  <p>Can anybody help me to solve that problem or give working example?</p>
  
  <hr>
  
  <p>Main thing which I want to achieve is scanning for new images in Nextgen Gallery plugin for Wordpress. Is there XML-RPC way of doing that?</p>
  
  <p>Thanks in advance.</p>