Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2011, 12:07   #1
temkas
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 16
По умолчанию Передачи куки между классами

как собственно можно передать CookieCollection другому классу, пробовал через конструктор, всегда ошибка что переменная типа кукиколекции нулл
temkas вне форума Ответить с цитированием
Старый 26.08.2011, 12:39   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы создали эту коллекцию для начала?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.08.2011, 12:52   #3
temkas
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 16
По умолчанию

Код:
public class Login
    {
        private Form1 fr;
        public CookieCollection cooks = new CookieCollection();

        public Login(Form1 form)
        {
            fr = form;
        }

        public void test()
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://url");
            httpWebRequest.CookieContainer = new CookieContainer();

            if (cooks != null)
            {
                httpWebRequest.CookieContainer.Add(cooks);
            }

            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            httpWebResponse.Cookies = httpWebRequest.CookieContainer.GetCookies(httpWebRequest.RequestUri);

            if (httpWebResponse.Cookies != null)
            {
                cooks.Add(httpWebResponse.Cookies);
            }

            Stream stream = httpWebResponse.GetResponseStream();
            StreamReader reader = new StreamReader(stream);

        }
Вот колекция и запрос на сайт с сохранением куков

Код:
public class Carier
    {
        private Form1 fr;
        private Login forcarier;

        public Carier(Form1 form)
        {
            fr = form;
        }

        public Carier(Login log)
        {
            forcarier = log;
        }

        public void test()
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://url");
            httpWebRequest.CookieContainer = new CookieContainer();
            if (forcarier.cooks != null)
            {
                httpWebRequest.CookieContainer.Add(Cooks);
            }
            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            httpWebResponse.Cookies = httpWebRequest.CookieContainer.GetCookies(httpWebRequest.RequestUri);
            if (httpWebResponse.Cookies != null)
            {
                forcarier.cooks.Add(httpWebResponse.Cookies);
            }
            Stream stream = httpWebResponse.GetResponseStream();
            StreamReader reader = new StreamReader(stream);
        }
    }
}
пытаюсь так считать и не получается
temkas вне форума Ответить с цитированием
Старый 26.08.2011, 13:14   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
public class Login
    {
        private Form1 fr;
        public CookieCollection cooks = new CookieCollection();

        public Login(Form1 form)
        {
            fr = form;
        }

        public void test()
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://url");
            httpWebRequest.CookieContainer = cooks;

            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            //cooks.Add(httpWebResponse.Cookies); попробуйте без этого, помоему куки от ответа передаются в куки контейнер запроса.

            Stream stream = httpWebResponse.GetResponseStream();
            StreamReader reader = new StreamReader(stream);

        }
у вас есть коллекция куков, не нужно плодить тысячи их.(так же и далее, коллекция есть, так её и применяйте)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.08.2011, 13:23   #5
temkas
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 16
По умолчанию

просто у меня есть функция логин там сохраняю сессию и тут я её читаю, в классе логин все отлично работает, а как начинаю передавать коллекцию куков в другой класс, она почему то всегда NULL
temkas вне форума Ответить с цитированием
Старый 26.08.2011, 13:33   #6
temkas
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Код:
public class Login
    {
        private Form1 fr;
        public CookieCollection cooks = new CookieCollection();

        public Login(Form1 form)
        {
            fr = form;
        }

        public void test()
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://url");
            httpWebRequest.CookieContainer = cooks;

            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            //cooks.Add(httpWebResponse.Cookies); попробуйте без этого, помоему куки от ответа передаются в куки контейнер запроса.

            Stream stream = httpWebResponse.GetResponseStream();
            StreamReader reader = new StreamReader(stream);

        }
у вас есть коллекция куков, не нужно плодить тысячи их.(так же и далее, коллекция есть, так её и применяйте)
тут получится преобразование коллекции в контейнет, так нельзя

а я вначале смотрю есть ли в коллекции куки если есть то я их возвращаю в запрос, тобиш восстанавливаю старую сессию, если после ответа от сайта куки изменились я их обновляю, и так для каждого запроса.
temkas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Куки ilSMoKEli Работа с сетью в Delphi 1 15.06.2010 11:09
взаимотношения между классами ciaonataha Общие вопросы C/C++ 3 23.07.2009 18:37
Куки Kinematik Работа с сетью в Delphi 0 27.12.2008 04:53