post/get запросы в Delphi
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
post/get запросы в Delphi - 2009-02-04 23:45:26.850000
|
|
|
ydzero
Сообщений: 100
Оценки: 0
Присоединился: 2008-11-06 15:38:02.560000
|
Всем привет. Помогите разобраться с post и get запросами с использованием Indy. Собственно, стоит такая задача, необходимо послать get запрос на url, но для доступа необходима авторизация. Пытался через кукисы, т.е. подставлял куки авторизованного пользователя, но видать не умею. Как делал, подрубал TidCookieManager, цеплял к tidhttp, и через addcookie(ACookie:string, AHost:string) пихал, но при запросе куки вообще не отсылались, проверял снифером.
|
|
|
RE: post/get запросы в Delphi - 2009-02-05 11:28:29.456666
|
|
|
KentOne
Сообщений: 178
Оценки: 0
Присоединился: 2008-07-15 16:30:46.030000
|
Когда-то давно тож были проблемы с куками в Инди с TidCookieManage, с ним так ничего и не получилось, выбросил его с проекта. Вместо этого дописал такое: IdHTTP1.Request.CustomHeaders.Add(ncoockie); ncoockie - текстовая переменная в которой хранятся куки. Для получения куков использовал пост с нужными параметрами: var tst : TStringList;
begin
tst := TStringList.Create;
tst.Add('email=1.1@gmail.com');
tst.Add('pass=***');
Form1.IdHTTP1.Post('http://vkontakte.ru/login.php',tst,Stream);
end;
А потом поиск куков в том, что было возвращено (поиск сделан "через ж…", если есть время пиши свой): procedure getCookie(st : string);
var i,j : integer;
ncoockie : string;
begin
ncoockie := '';
for i := 1 to length(st) do
if copy(st,i,10) = 'Set-Cookie' then
begin
for j := i+11 to length(st) do
if st[j] = ';' then
begin
ncoockie := ncoockie + copy(st,i+11,j-i-10);
break;
end;
end;
if length(ncoockie) > 50 then
begin
ncoockie := 'Connection: Keep-Alive'+#13+'Cache-Control: no-cache'+#13+'Cookie: remixchk=5'+'Cookie: '+ncoockie;
Form1.IdHTTP1.Request.CustomHeaders.Clear;
Form1.IdHTTP1.Request.CustomHeaders.Add(ncoockie);
end;
end;
А теперь можно делать get: stin := 'http://vkontakte.ru/id***';
st := Form1.IdHTTP1.Get(stin);
st и stin - обычные string;
|
|
|
RE: post/get запросы в Delphi - 2009-02-06 21:31:43.740000
|
|
|
ydzero
Сообщений: 100
Оценки: 0
Присоединился: 2008-11-06 15:38:02.560000
|
quote:
ORIGINAL: KentOne Когда-то давно тож были проблемы с куками в Инди с TidCookieManage, с ним так ничего и не получилось, выбросил его с проекта. Вместо этого дописал такое: IdHTTP1.Request.CustomHeaders.Add(ncoockie); ncoockie - текстовая переменная в которой хранятся куки. Спасибо) Все равно не работает)) UPD Кароче парил себе мозг как только мог, твой метод все таки сработал, но в первый раз в заголовок я добавлял этот ncookie, который текстовая строка, так ни че не получилось, седня только доперло, в headers, в браузере идет Cookie: bla bla bla, т.е. добавил перед текстом Cookie: и все заработало) В общем, большое тебе спасибо, реально помог) p.s. жахнул как полагаеться +
|
|
|
RE: post/get запросы в Delphi - 2009-02-08 14:26:38.376666
|
|
|
KentOne
Сообщений: 178
Оценки: 0
Присоединился: 2008-07-15 16:30:46.030000
|
Рад, что у тебя все получилось, удачи в начинаниях;)
|
|
|
|
|