Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

### Автоматизация загрузки CSV с защищённого сайта в Delphi без диалога "Сохранить как"

Delphi , Базы данных , ASCII и CSV

Автоматизация загрузки CSV с защищённого сайта в Delphi без диалога "Сохранить как"

Приветствую! В данной статье мы рассмотрим, как автоматизировать загрузку CSV файла с защищённого веб-сайта на языке Delphi, при этом избегая появления диалога "Сохранить как". Это может быть необходимо, например, для интеграции данных в собственные приложения или для их последующей обработки. Для начала работы нам понадобится компонент TWebBrowser, который позволит нам взаимодействовать с веб-страницами.

Шаг 1: Подготовка компонентов

Для начала добавим в наш проект следующие компоненты:

  • TWebBrowser - для отображения веб-страницы и взаимодействия с ней.
  • IdHTTP - для выполнения HTTP запросов и загрузки данных.
  • IdSSLIOHandlerSocketOpenSSL - для работы с защищёнными соединениями.

Шаг 2: Автоматическое выполнение JavaScript

На веб-странице, с которой мы хотим загрузить данные, есть кнопка, которая при нажатии выполняет JavaScript функцию для начала загрузки CSV файла. Для автоматического выполнения этой функции в Delphi, используем метод execScript компонента TWebBrowser.

procedure TForm1.BtnClickDownloadbuttonClick(Sender: TObject);
var
  TheDocument : IHTMLDocument2;
  HTMLWindow: IHTMLWindow2;
begin
  TheDocument := WebBrowser1.Document as IHTMLDocument2;
  if Assigned(TheDocument) then
  begin
    HTMLWindow := TheDocument.parentWindow;
    if Assigned(HTMLWindow) then
      HTMLWindow.execScript('dl_module.DownloadCsv()', 'JavaScript');
  end;
end;

Шаг 3: Перехват события загрузки файла

Чтобы избежать диалога "Сохранить как", необходимо перехватить событие загрузки файла. Для этого добавим обработчик события OnBeforeFileDownload для TWebBrowser.

procedure TForm1.BeforeFileDownload(Sender: TObject; const FileSource: WideString; var Allowed: Boolean);
begin
  // Здесь будет код для перехвата и сохранения файла
end;

Шаг 4: Сохранение файла без диалога

В обработчике BeforeFileDownload будем использовать IdHTTP для загрузки файла напрямую в память. Для работы с SSL соединениями используем IdSSLIOHandlerSocketOpenSSL.

procedure TForm1.BeforeFileDownload(Sender: TObject; const FileSource: WideString; var Allowed: Boolean);
var
  IdHTTP: TIdHTTP;
  FileStream: TMemoryStream;
  LHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
  Allowed := True; // Разрешаем загрузку файла
  if Assigned(LHandler) then
    LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
    IdHTTP := TIdHTTP.Create(nil);
    try
      IdHTTP.IOHandler := LHandler;
      IdHTTP.HandleRedirects := True;
      FileStream := TMemoryStream.Create;
      IdHTTP.Get(FileSource, FileStream);
      with FileStream do
      begin
        SaveToFile('data.csv');
        Close;
      end;
    finally
      FreeAndNil(IdHTTP);
    end;
  finally
    FreeAndNil(LHandler);
  end;
end;

Шаг 5: Авторизация на сайте

Если сайт требует авторизации, необходимо также передать cookies, полученные через TWebBrowser, в IdHTTP. Это можно сделать с помощью IdCookieManager.

Заключение

Автоматизация загрузки файлов с веб-сайта может быть непростой задачей, особенно если сайт использует защищённое соединение и требует авторизации. В данной статье мы рассмотрели основные шаги для решения этой задачи в среде Delphi, используя компоненты TWebBrowser и IdHTTP.

Не забывайте, что автоматизация действий на веб-сайте может нарушать условия использования сайта, поэтому всегда убедитесь, что ваши действия законны и не нарушают политику сайта.

Создано по материалам из источника по ссылке.

Описание контекста: Автоматизация процесса загрузки CSV файла с защищённого веб-сайта в среде Delphi, без использования диалога "Сохранить как".


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: ASCII и CSV ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-22 09:39:13/0.0060410499572754/1