I can’t figure out how to get cookies from the server through WebRequest. It simply does not install and does not see them ... Everything is fine through the browser, the server_id cookie is displayed.

string url = "http://site.ru/test.php"; HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url); request.CookieContainer = new CookieContainer(); HttpWebResponse response = (HttpWebResponse) request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string result = reader.ReadToEnd(); System.Windows.Forms.MessageBox.Show(result); 

On the site itself (on the test.php page):

 setCookie('server_id', 123, time() + 60 * 60 * 24 * 365, '/'); echo $_COOKIE['server_id']; 

    1 answer 1

    CookieContainer is a collection in which you can add the necessary objects of type Cookie. You simply initialize it without adding anything to it.

    That is, in order to send a cookie, you need to do something like:

     var container = new CookieContainer(); container.Add(new Cookie("Name_1", "Value")); container.Add(new Cookie("Name_2", "Value")); 

    And then this collection can and ask the request.

    About getting ...
    You have a response from the server, that is, HttpWebResponse response - the response has the same collection with a cookie. Just take what you need, as from a regular collection, or go through a cycle.

    Here is an example from MS (for clarity, which values ​​can be pulled out):

     foreach (Cookie cook in response.Cookies) { Console.WriteLine("Cookie:"); Console.WriteLine("{0} = {1}", cook.Name, cook.Value); Console.WriteLine("Domain: {0}", cook.Domain); Console.WriteLine("Path: {0}", cook.Path); Console.WriteLine("Port: {0}", cook.Port); Console.WriteLine("Secure: {0}", cook.Secure); Console.WriteLine("When issued: {0}", cook.TimeStamp); Console.WriteLine("Expires: {0} (expired? {1})", cook.Expires, cook.Expired); Console.WriteLine("Don't save: {0}", cook.Discard); Console.WriteLine("Comment: {0}", cook.Comment); Console.WriteLine("Uri for comments: {0}", cook.CommentUri); Console.WriteLine("Version: RFC {0}", cook.Version == 1 ? "2109" : "2965"); // Show the string representation of the cookie. Console.WriteLine("String: {0}", cook.ToString()); }