C#: Writing a CookieContainer to Disk and Loading Back In For Use

后端 未结 3 528
暗喜
暗喜 2020-12-13 00:54

I have a CookieContainer extracted from a HttpWebRequest/HttpWebResponse session named CookieJar. I want my application to store cooki

3条回答
  •  情深已故
    2020-12-13 01:19

    This problem was bugging me for ages, nothing I could find worked. I worked it out, so putting that information out into the world.

    Answer using BinaryFormatter:

        public static void WriteCookiesToDisk(string file, CookieContainer cookieJar)
        {
            using(Stream stream = File.Create(file))
            {
                try {
                    Console.Out.Write("Writing cookies to disk... ");
                    BinaryFormatter formatter = new BinaryFormatter();
                    formatter.Serialize(stream, cookieJar);
                    Console.Out.WriteLine("Done.");
                } catch(Exception e) { 
                    Console.Out.WriteLine("Problem writing cookies to disk: " + e.GetType()); 
                }
            }
        }   
    
        public static CookieContainer ReadCookiesFromDisk(string file)
        {
    
            try {
                using(Stream stream = File.Open(file, FileMode.Open))
                {
                    Console.Out.Write("Reading cookies from disk... ");
                    BinaryFormatter formatter = new BinaryFormatter();
                    Console.Out.WriteLine("Done.");
                    return (CookieContainer)formatter.Deserialize(stream);
                }
            } catch(Exception e) { 
                Console.Out.WriteLine("Problem reading cookies from disk: " + e.GetType()); 
                return new CookieContainer(); 
            }
        }
    

提交回复
热议问题