Cookies - pewnie banalny problem

0

Witam kolegów i koleżanki,

Zacząłem ostatnio kombinować w C# z Cookiesami i mam problem, poniżej wstawiam kod:
test.php - wyświetla albo formularz albo nazwę użytkownika z cookie

<?php
if (isset($_COOKIE['imie']))
{
$imie = $_COOKIE['imie'];
}
?>
<?php echo 'Witaj ';?>
<?php
if (empty($imie))
{
       <<<<WYŚWIETLENIE FORMULARZA LOGOWANIA>>>>
}
else
{
    echo $imie;
}
?>

test2.php - ustawia cookie

<?php
$imie = trim($_POST["imie"]);
setcookie("imie", $imie, time()+120*60, '/','mars.iti.pk.edu.pl');
?>

W IE i Mozilli wszystko działa, w C# działa połowicznie

            cookieJar = new CookieContainer();
            string url = "http://mars.iti.pk.edu.pl/~teres/test2.php";
            string postData = "imie=teres&submit=Wyslij";
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.UserAgent = "User-Agent: Mozilla/4.0";
            request.Referer = "";
            request.CookieContainer = cookieJar;
            request.KeepAlive = false;
            request.Accept = "*/*";
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = postData.Length;
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();
            request.GetResponse();

Dostaję w odpowiedzi cookie i cookieJar.Count = 1

HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create("http://mars.iti.pk.edu.pl/~teres/test.php");
            request2.Method = WebRequestMethods.Http.Get;
            request2.UserAgent = "User-Agent: Mozilla/4.0";
            request2.CookieContainer = cookieJar;
            //request2.CookieContainer.Add(new Cookie("imie","teres","/","mars.iti.pk.edu.pl"));
            request2.KeepAlive = false;
            request2.Accept = "*/*";
            request2.GetResponse();

i du*a, nie mam pojęcia dlaczego nie wysyła ciasteczka :-( Jeśli odkomentuję linijkę dodającą ręcznie ciacho (cookieJar.Count=2), to działa.

Pomaga dopisanie linijki cookieJar.Add(response.Cookies) pomiędzy requestami. Czy ciasteczka trzeba dołączać ręcznie z odpowiedzi (response)?

Ten kod działa, ale czy ciacha trzeba dodawać ręcznie z WebResponse ?

private void button2_Click(object sender, EventArgs e)
        {
            string url = "http://mars.iti.pk.edu.pl/~teres/test2.php";
            string postData = "imie=teres&submit=Wyslij";
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.UserAgent = "User-Agent: Mozilla/4.0";
            request.Referer = "";
            request.CookieContainer = cookieJar;
            request.KeepAlive = false;
            request.Accept = "*/*";
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = postData.Length;

            Stream dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();
            request.GetResponse();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            response.Close();

            cookieJar.Add(response.Cookies);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            string url = "http://mars.iti.pk.edu.pl/~teres/test.php";
            HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(url);
            request2.Method = WebRequestMethods.Http.Get;
            request2.UserAgent = "User-Agent: Mozilla/4.0";
            request2.Referer = url;
            request2.CookieContainer = cookieJar;
            request2.KeepAlive = false;
            request2.Accept = "*/*";
            HttpWebResponse response = (HttpWebResponse)request2.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader responseStreamReader = new StreamReader(responseStream);
            textBox1.AppendText(responseStreamReader.ReadToEnd() + "\r\n");
            responseStreamReader.Close();
            responseStream.Close();
            response.Close();
        }
0

Problem jest bardzo podobny do opisanego http://bytes.com/topic/net/answers/857314-issue-accessing-cookies <--Tutaj
Próbowałem różnych akcji i działa tylko wtedy jak request ma ustawiony CookieContainer i dodamy ciacho z response'a

1 użytkowników online, w tym zalogowanych: 0, gości: 1