На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > Заполнение Cookies , Передача Cookies при отправке запроса на сервер
      Всем привет!

      Взял пример для работы отсюда

      Вопрос в следующем: мне необходимо передать куки при запросе страницы.
      В ИЕ куки есть, захожу на требуемый сайт без ввода логина и пароля.
      Пробовал посмотреть куки с помощью InternetGetCookie как описано здесь, но lpszData всегда равно NULL.

      Подскажите, плиз, как передать куки при отправке запроса?

      Заранее всем благодарен!
        Даже простой пример не дает желаемых результатов :(
        Проходит без ошибок, но lpszData указывает на NULL
        В чем проблема? Чего не хватает?
        ExpandedWrap disabled
              if (!InternetSetCookie(_T("http://MyTestCookieSite"), _T("MyTestCookieName"), _T("MyTestCookieValue")))
              {
                  Error = GetLastError();
              }
              else
              {
                  again:
           
                  if (!InternetGetCookie(_T("http://MyTestCookieSite"), NULL, lpszData, &dwSize))
                  {
                      Error = GetLastError();
                      if (Error == ERROR_INSUFFICIENT_BUFFER)
                      {
                          lpszData = new TCHAR[dwSize];
                          goto again;
                      }
                      else
                      {
                      }
                  }
                  else
                  {
                      delete[]lpszData;
                  }
              }


        Добавлено
        Частично разобрался >:( не стоило доверять примерам, а стоило читать доки!
        Так работает:
        ExpandedWrap disabled
              if (!InternetSetCookie(_T("http://MyTestCookieSite.com"), _T("MyTestCookieName"), _T("MyTestCookieValue")))
              {
                  Error = GetLastError();
              }
              else
              {
                  again:
           
                  if (!InternetGetCookie(_T("http://MyTestCookieSite.com"), NULL, lpszData, &dwSize))
                  {
                      Error = GetLastError();
                      if (Error == ERROR_INSUFFICIENT_BUFFER)
                      {
                          lpszData = new TCHAR[dwSize];
                          goto again;
                      }
                      else
                      {
                      }
                  }
                  else
                  {
                      if (lpszData == NULL && dwSize > 0)
                      {
                          lpszData = new TCHAR[70];
                          goto again;
                      }
                      delete[]lpszData;
                  }
              }
          После некоторых разборов осталось два вопроса:

          1. IE (версии 8) залогинен.
          Захожу им на ресурс, смотрю в фидлере: отправляются все куки.
          Отправляю запрос вышеуказанным примером: отправляются не все куки.
          Смотрел в папке Windows\Cookies - там тоже не все куки.
          Где IE хранит остальные куки?

          2. При отправке запроса вышеуказанным примером подставляется и сачть куков, которая лежит в Windows\Cookies.
          Как добиться того, чтоб отправлялись только те куки, которые я указываю, а куки из Windows\Cookies не отправлялись?
            Цитата -=CAP=- @
            2. При отправке запроса вышеуказанным примером подставляется и сачть куков, которая лежит в Windows\Cookies.
            Как добиться того, чтоб отправлялись только те куки, которые я указываю, а куки из Windows\Cookies не отправлялись?

            Так с этим разобрался:
            1. В параметр dwFlags функции HttpOpenRequest добавляем INTERNET_FLAG_NO_COOKIES.
            2. Прописывем требуемые куки непосредственно в хедере (поля lpcszHeader и dwHeadersLength структуры INTERNET_BUFFERS, передаваемой параметром lpBuffersIn метода HttpSendRequestEx).
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0253 ]   [ 15 queries used ]   [ Generated: 31.05.24, 13:23 GMT ]