none
запись и чтение куки в одном запросе RRS feed

  • Вопрос

  • Такая проблема. Не получается отправить куки на сайт, а потом получить вместе с ответом куки в одном запросе.
    Т.е. в отдельных запросах получается прочесть куки, например, так:

    HttpWebRequest httpWr1 = (HttpWebRequest) WebRequest.Create("http://localhost/denwer/new_form/index.php");
                httpWr1.CookieContainer = new CookieContainer();
                HttpWebResponse webres = (HttpWebResponse)httpWr1.GetResponse();
                textBox1.Text += webres.Cookies[0].ToString();

    И получается записать куки, например, так:

    HttpWebRequest httpWr1 = (HttpWebRequest) WebRequest.Create("http://localhost/denwer/new_form/index.php");
                string cookie = "index=10;";
                httpWr1.Headers.Add(HttpRequestHeader.Cookie, cookie);
                HttpWebResponse webres = (HttpWebResponse)httpWr1.GetResponse();

    Но чтобы при запросе записать, а при ответе получить - не выходит. Если в случае записи просто считать куки в ответе, то пояляется ошибка - куки пусты.

    24 января 2010 г. 5:19

Ответы

  • А может куки на самом деле пусты? ;-)

    • Предложено в качестве ответа Alexander V. Vasilyev 25 января 2010 г. 9:10
    • Помечено в качестве ответа I.Vorontsov 26 января 2010 г. 6:01
    25 января 2010 г. 9:08
  • А может куки на самом деле пусты? ;-)


    на самом деле да) . Я уже разобрался.. были проблемы с правильным использованием CookieContainer.
    Привожу правильный вариант программы, которая делает следующее:
    1. Делает запрос на сайт, получает куки
    2. Делает на тот же сайт запрос (второй раз) с полученными ранее куками и получает новые куки.

    HttpWebRequest h1 = (HttpWebRequest) WebRequest.Create("http://bete.tv");
                h1.AllowAutoRedirect = false;
                CookieContainer cc = new CookieContainer();
                h1.CookieContainer = cc;
                HttpWebResponse r1 = (HttpWebResponse)h1.GetResponse();
                foreach (Cookie c in r1.Cookies)
                {
                    textBox1.Text += "\r\n cook1:" + c;
                    cc.Add(c);
                }
                HttpWebRequest h2 = (HttpWebRequest)WebRequest.Create("http://bete.tv");
                h2.AllowAutoRedirect = false;
                h2.CookieContainer = cc;
                HttpWebResponse r2 = (HttpWebResponse)h2.GetResponse();
                foreach (Cookie c in r2.Cookies)
                    textBox1.Text += "\r\n cook2:" + c;   

    • Помечено в качестве ответа I.Vorontsov 26 января 2010 г. 6:01
    25 января 2010 г. 19:16

Все ответы

  • А может куки на самом деле пусты? ;-)

    • Предложено в качестве ответа Alexander V. Vasilyev 25 января 2010 г. 9:10
    • Помечено в качестве ответа I.Vorontsov 26 января 2010 г. 6:01
    25 января 2010 г. 9:08
  • А может куки на самом деле пусты? ;-)


    на самом деле да) . Я уже разобрался.. были проблемы с правильным использованием CookieContainer.
    Привожу правильный вариант программы, которая делает следующее:
    1. Делает запрос на сайт, получает куки
    2. Делает на тот же сайт запрос (второй раз) с полученными ранее куками и получает новые куки.

    HttpWebRequest h1 = (HttpWebRequest) WebRequest.Create("http://bete.tv");
                h1.AllowAutoRedirect = false;
                CookieContainer cc = new CookieContainer();
                h1.CookieContainer = cc;
                HttpWebResponse r1 = (HttpWebResponse)h1.GetResponse();
                foreach (Cookie c in r1.Cookies)
                {
                    textBox1.Text += "\r\n cook1:" + c;
                    cc.Add(c);
                }
                HttpWebRequest h2 = (HttpWebRequest)WebRequest.Create("http://bete.tv");
                h2.AllowAutoRedirect = false;
                h2.CookieContainer = cc;
                HttpWebResponse r2 = (HttpWebResponse)h2.GetResponse();
                foreach (Cookie c in r2.Cookies)
                    textBox1.Text += "\r\n cook2:" + c;   

    • Помечено в качестве ответа I.Vorontsov 26 января 2010 г. 6:01
    25 января 2010 г. 19:16