Вы могли использовать WinINet API как это:
uses WinInet;
function GetUrlContent(const Url: string): string;
var
NetHandle: HINTERNET;
UrlHandle: HINTERNET;
Buffer: array[0..1024] of Char;
BytesRead: dWord;
begin
Result := '';
NetHandle := InternetOpen('Delphi 5.x', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(NetHandle) then
begin
UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
if Assigned(UrlHandle) then
{ UrlHandle valid? Proceed with download }
begin
FillChar(Buffer, SizeOf(Buffer), 0);
repeat
Result := Result + Buffer;
FillChar(Buffer, SizeOf(Buffer), 0);
InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
until BytesRead = 0;
InternetCloseHandle(UrlHandle);
end
else
{ UrlHandle is not valid. Raise an exception. }
raise Exception.CreateFmt('Cannot open URL %s', [Url]);
InternetCloseHandle(NetHandle);
end
else
{ NetHandle is not valid. Raise an exception }
raise Exception.Create('Unable to initialize Wininet');
end;
источник: http://www.scalabium.com/faq/dct0080.htm
WinINet API использует тот же материал, который InternetExplorer использует так, Вы также получаете любое соединение и проксируете настройки, установленные InternetExplorer бесплатно.
Вызов УСПОКОИТЕЛЬНОГО веб-сервиса с помощью Инди является довольно прямым.
Добавляют IdHTTP к Вашему пункту использования. Помните, что IdHTTP нужен префикс "HTTP://" на Ваших URL.
function GetURLAsString(const aURL: string): string;
var
lHTTP: TIdHTTP;
begin
lHTTP := TIdHTTP.Create;
try
Result := lHTTP.Get(aURL);
finally
lHTTP.Free;
end;
end;
Используйте функция синапса TCP/IP в единице HTTPSEND ( HTTPGetText, HTTPGetBinary). Это сделает получение по запросу HTTP для Вас и не требует никакого внешнего DLL кроме Winsock. Последние SVN выпускают работы отлично в Дельфи 2009. Это использует блокирующиеся вызовы функции, таким образом, никакие события к программе.
Обновление: единицы очень легки, и не компонентно-ориентированы. Последняя версия от SVN работает отлично в Delphi XE4 также.
Если можно загружать в файл, то можно использовать TDownloadURL из блока ExtActns. Это намного проще, чем использовать WinInet напрямую.
procedure TMainForm.DownloadFile(URL: string; Dest: string);
var
dl: TDownloadURL;
begin
dl := TDownloadURL.Create(self);
try
dl.URL := URL;
dl.FileName := Dest;
dl.ExecuteTarget(nil); //this downloads the file
finally
dl.Free;
end;
end;
Также при использовании этого можно получать уведомления о ходе выполнения. Просто назначьте обработчик события для события OnDownloadProgress в TDownloadURL.