Вчера делал заказ. Нужно было написать программу на Delphi, которая с помощью INDY компонентов авторизируется на сайта LiveInternet и получает в Memo html код страницы поисковых фраз.
На самом деле задача довольно простая и решается за пару минут.
- Кидаем на форму компонент IdHTTP
- В uses добавляем IdMultipartFormData
- Кидаем на форму два компонента Edit, кнопку и Memo
В обработчике нажатия на кнопку пишем:
// В USES должны быть IdHTTP, IdMultipartFormData
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TIdMultipartFormDataStream;
Code: String;
beginCode:=' ';
// Mеняем UserAgent
IdHTTP1.Request.UserAgent:='Mozilla/4.0 (compatible: MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727';
// Завторизация
Stream := TIdMultipartFormDataStream.Create;
try
Stream.AddFormField('url', AnsiToUtf8(Edit1.Text)); //url-это name поля ввода логина
Stream.AddFormField('password', AnsiToUtf8(Edit2.Text)); // аналогично
IdHTTP1.HandleRedirects := True;
IdHTTP1.Post('http://www.liveinternet.ru/stat/'+Edit1.Text+'/queries.html', Stream ); //авторизируемся
code:=IdHTTP1.Get('http://www.liveinternet.ru/stat/'+Edit1.Text+'/queries.html'); // получаемк код странички
Memo1.Text:=Utf8ToAnsi(Code); // выводим код в мемоexcept
on e:Exception do
begin
Stream.Free;
exit;
end
end;
Stream.Free;end;
liveinternet_delphi.rar (211,8 КиБ, 1 135 hits)
Да, чтож Indy полезная щтука. На работе делали как-то выгрузку XML на другой сервис - насяльника застрапонил меня за предложение пользовать Indy. И вот и усирались с этим WinInet. А по мне, вышло бы проще и быстрее, без потери надёжности