Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Indy. Загрузка cookie с помощью AddCookie


Автор: davemus 4.7.2009, 14:42
Для сохранения Cookie использую функцию:
Код

function TForm1.SaveCookies: boolean;
var i:integer;
    f:TIniFile;
    ident,value:string;
begin
  try
    f:=TIniFile.Create('c:\cookie.ini');
    for i:=0 to IdCookieManager1.CookieCollection.Count-1 do
      begin
        ident:=IdCookieManager1.CookieCollection.Items[i].CookieName;
        value:=IdCookieManager1.CookieCollection.Items[i].Value;
        f.WriteString('Cookies',ident,value);
      end;
    Result:=true;
  finally
    f.Free;
  end;
end;


Следующая функция читает куки обратно:


Код

function TForm1.LoadCookies: boolean;
var
    i:integer;
    f:TIniFile;
    m:TStringList;
begin
    f:=TIniFile.Create('c:\cookie.ini');
    m:=TStringList.Create;
    try
      f.ReadSection('Cookies',m);
      for i:=0 to m.count-1 do
        IdCookieManager1.AddCookie(m[i]+'='+f.ReadString('Cookies',m[i],''),'тут пишем сайт куков');
      f.Free;
      m.free;
      Result:=true;
    except
      f.Free;
      m.free;
      Result:=false;
    end;
end;


Вопрос: 
При чтении куков обратно в строке:
IdCookieManager1.AddCookie(m[i]+'='+f.ReadString('Cookies',m[i],''),'тут пишем сайт куков');
возникает ошибка:
Incompatible types: 'TIdURI' and 'string'
Каким способом можно решить данную проблему?
Использую Indy 10.5.5.
На старой версии Indy 10.2.5 не было этой ошибки, но куки все равно не загружались. Поставил
Indy 10.5.5, результат:
[url=]http://i061.radikal.ru/0907/d5/c40609390b34.jpg[/url]
Какие-то проблемы с кодировкой в Indy 10.5.5 ... Но опять же при загрузке страницы перестали появляться крякозябры, и стали отображаться русские буквы. Какой версией Indy теперь ползоваться, голову ломаю...

Автор: MetalFan 4.7.2009, 19:30
пользоваться советую самой свежей.
а что мешает посмотреть описание TIdURI? + посмотреть методы TIdCookieManager'а, может есть другой метод добавления куков

Автор: davemus 4.7.2009, 20:02
Цитата(MetalFan @  4.7.2009,  19:30 Найти цитируемый пост)
пользоваться советую самой свежей.а что мешает посмотреть описание TIdURI? + посмотреть методы TIdCookieManager'а, может есть другой метод добавления куков


Indy 10.5.5 обновил позавчера с SVN репозитории разработчиков http://kvendi.pp.ru/?p=66 . Никогда не лазил в исходники инди, врядли смогу разобраться самостоятельно. А насчет другого метода добавления куков, хотелось бы услышать предложения. 

Автор: Magister Y0da 26.8.2009, 21:37
что-то я так и не разобрался с TIdURI.
функция та же самая у меня есть строка 'сайт.ру', как мне её передать в эту функцию как TIdURI?

Автор: sunnmas 27.8.2009, 14:31
Стойте, стойте. я опоздал на паровоз. У меня такая же проблема:

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

Юзаю IdHttp. Захожу на сайт, отправив пост. Сайт выставил куки. IdHttp куда-то их запомнил, но когда пытаюсь обратиться к КукМенеджеру - он установлен в nil. 

Хочу получить вот это, например: Http.CookieManager.CookieCollection.Items[0].CookieText
вылетает ошибка

Я подумал что нужно КукМенеджер создавать отдельно, хотя в хелпе:

CookieManager is used by the HTTP client when AllowCookies is True.

у меня AllowCookies = true.

как быть если мне нужно заполучить текстовые представления всех куков с сайта, на который только что заходил с idHttp?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)