title: c# - WebRequest HTTP POST with Cookie (port from curl script)
body: <p>The IBM RTC RESTful api gives an example of a shell script for authenticating with the server:</p>
  
  <pre><code>COOKIES=./cookies.txt
  
  USER=my_user
  PASSWORD=my_password
  HOST="https://myJazzServer:9092/jazz"
  
  curl -k -c $COOKIES "$HOST/authenticated/identity"
  
  curl -k -L -b $COOKIES -c $COOKIES -d j_username=$USER -d j_password=$PASSWORD "$HOST/authenticated/j_security_check"
  </code></pre>
  
  <p>This works perfectly, however i need to authenticate with the server using c#.</p>
  
  <p>So far i have the following, but it isn't working (returns the authorization failed page):</p>
  
  <pre><code>    CookieContainer _cookie;
  
      public string _RTC()
      {
          HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://myJazzServer.com:9092/jazz/authenticated/identity");
          if (_cookie == null)
          {
              _cookie = new CookieContainer();
          }
          string a;
          request.CookieContainer = _cookie;
          using (var response = request.GetResponse())
          {
              using (StreamReader sr = new StreamReader(response.GetResponseStream()))
              {
                  a = sr.ReadToEnd();
              }
          }
  
  
  
  
          byte[] data = (new ASCIIEncoding()).GetBytes("j_username=myUser&amp;j_password=MyPass");
  
          request = (HttpWebRequest)WebRequest.Create("https://myJazzServer.com:9092/jazz/authenticated/j_security_check");
  
          request.Method = "POST";
          request.ContentType = "text/html";
          request.ContentLength = data.Length;
          request.CookieContainer = _cookie;
          Stream reqStream = request.GetRequestStream();
          reqStream.Write(data,0,data.Length);
  
          string b;
  
          using (var response = request.GetResponse())
          {
              using (var reader = new StreamReader(response.GetResponseStream()))
              {
                  b = reader.ReadToEnd();
              }
          }
      }
  </code></pre>