删除cookie/循环登录和注销请求

本文关键字:注销 请求 登录 循环 cookie 删除 | 更新日期: 2023-09-27 18:35:36

我正在做一个登录网站的项目,而不是立即注销并重新做一遍。好吧,我的问题是cookie,我不确定如何正确注销并重新发送。关闭应用程序并重新启动它会再次登录用户,以便清除其明显的 cookie。

   private void Form1_Load(object sender, EventArgs e)
    {
        WebRequest request;
        string postData;
        byte[] byteArray;
        Stream dataStream;
        while (true)
        {
            try
            {
                HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create("http://www.********/index.php");
                ASCIIEncoding encoding = new ASCIIEncoding();
                postData = "param=example&param=0&param=bigboy";
                byte[] data = encoding.GetBytes(postData);
                httpWReq.Method = "POST";
                httpWReq.ContentType = "application/x-www-form-urlencoded";
                httpWReq.ContentLength = data.Length;
                httpWReq.KeepAlive = false;
                httpWReq.CookieContainer = new CookieContainer();
                using (Stream stream = httpWReq.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                    stream.Close();
                }
            }
            catch (Exception err)
            {
                Console.WriteLine(err.Message);
            }
        }
    }

如何实现这样的循环过程?

删除cookie/循环登录和注销请求

类似于以下伪代码的东西应该适合您。

请注意,在登录和注销请求中重复使用相同的 CookieContainer 对象。

static void Main(string[] args)
{
    while (true)
    {
        try
        {
            CookieContainer cookies = new CookieContainer();

            HttpWebRequest loginRequest = (HttpWebRequest)WebRequest.Create("http://www.********/index.php");
            loginRequest.CookieContainer = cookies;
            // Configure login request headers and data, write to request stream, etc.
            HttpWebResponse loginResponse = (HttpWebResponse)loginRequest.GetResponse();

            HttpWebRequest logoutRequest = (HttpWebRequest)WebRequest.Create("http://www.********/logout.php");
            logoutRequest.CookieContainer = cookies;
            // Configure logout request headers and data, write to request stream, etc.
            HttpWebResponse logoutResponse = (HttpWebResponse)logoutRequest.GetResponse();
        }
        catch (Exception err)
        {
            Console.WriteLine(err.Message);
        }
    }
}

尝试一下这样的事情,让我知道它是怎么回事。

另外:尝试调试响应对象的 Cookie 属性。这是一个CookieCollection,而不是根据请求的CookieContainer。但是,如果您需要仔细查看到底发生了什么,它仍然应该提供有用的调试信息。此处的示例:http://goo.gl/L2MMrj