|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Спарсить и передать Cookie
Проблемма распространёная, т.к. от версии к версии у indy всегда проблемы.
Пробывал спарсить так: Код:
For N:=0 To Http.Response.RawHeade rs.Count-1 Do Begin If Http.Response.Raw Headers.Names[N]='Set-Cookie' Then Begin CookieList.Add(Http.Response.R awHeaders.ValueFromIndex[N]); End; End; Cookie вида Set-Cookie:usNick=...; expires=Sat, 19 Mar 2011 01:34:06 GMT Set-Cookie:usPass=...; expires=Sat, 19 Mar 2011 01:34:06 GMT как их спарсить и передать не пойму, прошу помощи, уже незнаю даже куда рытьна ваш форум последняя надежда |
#2
|
||||
|
||||
Код:
IdHTTP1.Get('http://ya.ru/'); IdHTTP1.Response.RawHeaders.Extract('Set-Cookie', Memo1.Lines); Пишу программы за еду. __________________ |
#3
|
|||
|
|||
NumLock это понятно, я имел ввиду что если делать так
Код:
For N:=2 To FH.Response.Ra wHeaders.Count-1 Do Begin If FH.Respons e.RawHeaders.Names[N]='Set-Cookie' Then Begin CookieList.Add(FH.Response.RawHe aders.ValueFromIndex[N]); End; End; for N := 0 to CookieList.Count-1 do ShowMe ssage(CookieList[N]); Login; expires=Sat, 19 Mar 2011 01:34:06 GMT Password; expires=Sat, 19 Mar 2011 01:34:06 GMT но как тогда обрезать expires=Sat, 19 Mar 2011 01:34:06 GMT |
#4
|
||||
|
||||
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdCookieManager, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP; type TForm1 = class(TForm) IdHTTP1: TIdHTTP; Memo1: TMemo; IdCookieManager1: TIdCookieManager; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin IdHTTP1.Get('http://forum29.ru'); for i:=0 to IdCookieManager1.CookieCollection.Count-1 do Memo1.Lines.Add(IdCookieManager1.CookieCollection[i].CookieName+'='+IdCookieManager1.CookieCollection[i].Value); end; procedure TForm1.FormCreate(Sender: TObject); begin IdHTTP1.CookieManager:=IdCookieManager1; end; end. Пишу программы за еду. __________________ |
#5
|
||||
|
||||
Можно еще про функцию Pos(';', ...) вспомнить, если именно HTTP заголовки парсить.
И причем тут проблемы инди - это стандартный формат заголовков, а expires задает время, до которого будет действительно ( надо хранить ) это значение куков. ( если я правильно помню ) |
#6
|
|||
|
|||
вобще я думал что expires=Sat, 19 Mar 2011 01:34:06 GMT задаёт сначала время получения куков, т.к. у меня не истекают, значет должен ещё один параметр передаваться, интрегующе звучит, чтож буду знатиь, а с POS у меня не получиться т.к их от одного и более там может быть
Последний раз редактировалось bulldog, 27.12.2010 в 15:41. |