2

I'm currently using the following piece of code to obtain the cookie for the website:

      bool IsLoginSuccessful = false;
  try
  {
    //Get Token and Authorization URL
    HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create("https://updates.site.com/download");
    wr.AllowAutoRedirect = true;
    WebResponse response = wr.GetResponse();
    response.Close();
    string data = response.ResponseUri.OriginalString;
    string ssoToken = data.Split('=')[1];
    string authData = String.Format("ssousername={0}&password={1}&site2pstoretoken={2}", username, password, ssoToken);
    string ssoServer = response.ResponseUri.Scheme + "://" + response.ResponseUri.Host;
    string ssoAuthUrl = "sso/auth";

    // now let's get our cookie for the download
    byte[] dataBytes = Encoding.UTF8.GetBytes(authData);
    string url = ssoServer + "/" + ssoAuthUrl;
    wr = (HttpWebRequest)HttpWebRequest.Create(url);

    //MyCookies is a CookieContainer I use to store the login cookies
    wr.CookieContainer = MyCookies;
    wr.Method = "POST";
    wr.ContentLength = dataBytes.Length;
    wr.ContentType = "application/x-www-form-urlencoded";
    Stream dataStream = wr.GetRequestStream();
    dataStream.Write(dataBytes, 0, dataBytes.Length);
    dataStream.Close();
    response = wr.GetResponse();
    response.Close();

    if (wr.CookieContainer.Count > 0)
    {
      IsLoginSuccessful = true;
    }
  }

I wonder if there's a way to use WebClient or a class that inherits from it, to obtain the cookie instead of using HttpRequest?

safejrz
  • 544
  • 1
  • 14
  • 26
  • 1
    Take a look at [this question](http://stackoverflow.com/questions/1777221/using-cookiecontainer-with-webclient-class). That should give you enough information to help you along your way. – Ichabod Clay Dec 31 '12 at 04:30

1 Answers1

1

to obtain the cookie instead of using HttpRequest?

Cookies are a Property of the HttpRequest:

int loop1, loop2;
HttpCookieCollection MyCookieColl;
HttpCookie MyCookie;

MyCookieColl = Request.Cookies;

// Capture all cookie names into a string array.
String[] arr1 = MyCookieColl.AllKeys;

// Grab individual cookie objects by cookie name. 
for (loop1 = 0; loop1 < arr1.Length; loop1++) 
{
   MyCookie = MyCookieColl[arr1[loop1]];
   Response.Write("Cookie: " + MyCookie.Name + "<br>");
   Response.Write ("Secure:" + MyCookie.Secure + "<br>");

   //Grab all values for single cookie into an object array.
   String[] arr2 = MyCookie.Values.AllKeys;

   //Loop through cookie Value collection and print all values. 
   for (loop2 = 0; loop2 < arr2.Length; loop2++) 
   {
      Response.Write("Value" + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + "<br>");
   }
}
Jeremy Thompson
  • 61,933
  • 36
  • 195
  • 321