Парсинг кукисов C#

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by cheater_man, 16 Oct 2011.

  1. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Проблема думаю распространенная, с парсингом кукисов в HttpWebReqest(Respose), вот и я столкнулся с ней=)
    Вообщем парсим куки через Set-cookies, куки приходят, но не в полном объеме.
    Много разных способов пробовал парсинга, но результатов нет.
    Может кто встречался с данной проблемой проблемой прошу отписать.
    ps/ VS подрукой нет, так что не могу сорцы предоставить
     
  2. Vermont

    Vermont New Member

    Joined:
    16 Jul 2011
    Messages:
    3
    Likes Received:
    1
    Reputations:
    0
    Я не до конца понял суть проблемы с парсингом,приведу часть листинга найденного в сети и частично дописанный, может частично поможет:
    req.Method = "GET";
    req.ContentType = "application/x-www-form-urlencoded";
    req.Headers.Add("Accept-Language", "ru");
    req.Headers.Add("UserAgent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322");
    req.Headers.Add("Cookie", "automatic");
    req.Headers.Add("ContentLength","avtomatic");
    result = (HttpWebResponse) req.GetResponse();
    string[] cookieVal = null;
    if(result.Headers["Set-Cookie"] != null)
    cookieVal = result.Headers["Set-Cookie"].Split(new char[] {','});
    Stream ReceiveStream = result.GetResponseStream();
    Encoding encode = Encoding.GetEncoding("utf-8");
    StreamReader sr = new StreamReader( ReceiveStream, encode );
    string answer = sr.ReadToEnd();
    sr.Close();
    result.Close();
    CookieContainer cookie = new CookieContainer();
    foreach(string cook in cookieVal)
    {
    string[] cookie1 = cook.Split(new char[] {';'});
    if(cookie1.Length < 2)
    continue;
    cookie.Add(new Cookie(cookie1[0].Split(new char[] {'='})[0],
    cookie1[0].Split(new char[] {'='})[0], cookie1[1].Split(new char[] {'='})[1], cookie1.Length > 2 ? cookie1[2].Split(new char[] {'='})[1] : ""));
    textBox1.Text = cookie1[0].Split(new char[] {'='})[1];//cook;
    }
     
    1 person likes this.