Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Indy IdCookieManager, сервер не видит куки, добавить свои куки к существующим 
V
    Опции темы
Akella
  Дата 30.1.2012, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Indy 10.5.8.0, D2007.
Выполняю GET запрос. Но нужно передать куки серверу: op_bp=checked

Выполняю: 
Код

  IdHTTP1 := TIdHTTP.Create(Application);
  IdHTTP1.Request.UserAgent := sUserAgent;
  IdHTTP1.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
  IdHTTP1.Request.AcceptLanguage := 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
  IdHTTP1.Request.AcceptCharSet := 'IBM866,utf-8;q=0.7,*;q=0.7';
  IdHTTP1.Request.AcceptEncoding := 'gzip, deflate';

  IdHTTP1.HandleRedirects := true;
  IdHTTP1.AllowCookies := TRUE;

  IdCookieManager1 := TIdCookieManager.Create(IdHTTP1);
  IdHTTP1.CookieManager := IdCookieManager1;

  IdCompressorZLib1  := TIdCompressorZLib.Create(IdHTTP1);
  IdHTTP1.Compressor := IdCompressorZLib1;


...
...

Var
//cookie
  uri: TIdURI;
  strs: TStringList;
begin
...
...
idHTTP1.Get('http://www.egent.ru/');
uri := TIdURI.Create('www.egent.ru');
...
...

IdCookieManager1.CookieCollection.AddClientCookies('op_bp=checked');

или

strs.Clear;
strs.Add('op_bp=checked');
IdCookieManager1.CookieCollection.AddServerCookies(strs, uri);


ShowMessage(GetCookieList(IdCookieManager1));// вижу, что куки присутствую (GetCookieList см. ниже)
sl.Text :=  HttpGetUrl(URL, idHTTP1);//sl - TStringList
SaveSlToFile(sl.Text, 'd:\11.html');// сохраняю полученный контент в файл в файл.


В итоге вижу, что печенька (op_bp=checked) не влияет. 

Вот ссылка:
h__p://www.egent.ru/komnaty.html?sd=1&sn=0&r1=0&r2=0&r3=0&r4=0&opt1=1&opt2=0&opt3=0&price_ot=12000&price_do=
Справа вверху розовым нужно поставить галочку "Не выводить объявления посредников".
Без галочки сайт выводит 941 объявление, а с галочкой 680.

Так вот, после SaveSlToFile(sl.Text, 'd:\11.html'); проверяю файл, загружаю его в браузер и там показано, что найдено 941 объект, а должно быть 680.
Что я ещё мог забыть?
Почему в браузер отдается то, что нужно, а мне нет :(




Код

functionGetCookieList(CookieManager: TIdCookieManager): string;
var
  I: Integer;
begin
  with TStringList.Create do
    try
      LineBreak := ';';
      for I := 0 to CookieManager.CookieCollection.Count - 1 do
        Add(CookieManager.CookieCollection.Cookies[I].ClientCookie);
      Result := Text;
    finally
      Free;
    end;
end;



function HttpGetUrl(url: string; idHttp: TIdHttp): string;
var
  M: TStringStream;
begin
  M := TStringStream.Create('');

  try
      IdHTTP.Get(url, m);

      //SaveSlToFile(m.DataString, 'd:\12.html');

      if IdHTTP.ResponseCode = 502 then
        begin
          result := 'Ошибка 502. ' + url;
          freeandnil(m);
          exit;
        end;

  except
      on e: exception do
        begin
          result := 'Ошибка *HttpGetUrl*. ' + url;
          if Assigned(m) then freeandnil(m);
        end;
  end;// try except

    result := m.DataString;
    freeandnil(m);
end;


Добавлено через 6 минут и 40 секунд
Есть ли большая разница между
uri := TIdURI.Create('www.egent.ru');

и c http://
uri := TIdURI.Create('http://www.egent.ru');

?
PM MAIL   Вверх
Akella
Дата 31.1.2012, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Цитата(Akella @  30.1.2012,  14:05 Найти цитируемый пост)
Есть ли большая разница между
uri := TIdURI.Create('www.egent.ru');

и c http://
uri := TIdURI.Create('http://www.egent.ru');


Цитата(Akella @  30.1.2012,  14:05 Найти цитируемый пост)
Есть ли большая разница между
uri := TIdURI.Create('www.egent.ru');

и c http://
uri := TIdURI.Create('http://www.egent.ru');


Оказалось, что есть. 
Так правильно: uri := TIdURI.Create('http://www.egent.ru');
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.