我无法从C#HTTPWebRequest获取cookie

时间:2012-08-14 14:45:23

标签: c# http cookies request response

我需要从登录中获取Cookie,因为我会在同一页面中应用此Cookie。这是我的代码

        string boundary = "41184676334";
        string username = "username";
        string password = "password";


        string login_post_data =
               "POSTDATA=-----------------------------" + boundary  +
               "\nContent-Disposition: form-data; name=\"login\"" +
               "\n\n" + username  +
               "\n-----------------------------" + boundary  +
               "\nContent-Disposition: form-data; name=\"key\"" +
               "\n\n" + password  +
               "\n-----------------------------" + boundary  +
               "\nContent-Disposition: form-data; name=\"clcode\"" +
               "\n\n" +
               "\n-----------------------------" + boundary  + "--";

        var cookies = new CookieContainer();

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://site.com/cgi-bin/login.pl?logout");
        request.CookieContainer = cookies;



        request.Method = "POST";
        request.ContentType = "multipart/form-data; boundary=---------------------------" + boundary;

        request.Host = "site.com";
        request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1";
        request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        request.Referer = "https://site.com/cgi-bin/login.pl?logout";
        //request.Headers.Add("POSTDATA", post_data);

       using (var requestStream = request.GetRequestStream())
       {
           requestStream.Write(StrToByteArray(login_post_data), 0, StrToByteArray(login_post_data).Length);
        }



        HttpWebResponse response = (HttpWebResponse)request.GetResponse();



        using (Stream stream = response.GetResponseStream())
        {


            StreamReader reader = new StreamReader(stream);

            string temp = reader.ReadToEnd();
            richTextBox1.Text = temp;
        }


        foreach (string c in response.Cookies)
        {
            listBox1.Items.Add(c);
        }

事情是“https://site.com/cgi-bin/login.pl?logout”是我登录后的同一页面,我需要传递cookie

1 个答案:

答案 0 :(得分:0)

您似乎尝试登录并同时注销您的请求,并将其发送到网址

https://site.com/cgi-bin/login.pl?logout

删除?logout参数,然后重试。如果不改变任何内容,请更新您的问题。

请进一步解释,您正在尝试实现的目标,以便我们讨论代码是否正确。