WEB-приложение Сведение отчетности  (21.11.2024)
Модуль для взаимодействия по протоколу http(s)

Модуль для взаимодействия по протоколам http(s) представлен в поставляемом пользовательском приложении "ParusAppServerProvider", в виде COM-сервера.

В вышеуказанном модуле реализован COM-объект с ProgID ParusAppServerProvider.Provider, реализующий следующий интерфейс:

01  IProvider = interface(IDispatch)
02    ['{5CC36760-E292-44AA-B542-A32865828DAC}']
03    function CreateTempFileName(const Extension: WideString): WideString; safecall;
04    function CreateBinaryData: IDispatch; safecall;
05    function DownloadData(const Host: WideString; const Url: WideString;
06      const UserName: WideString; const Password: WideString; NegotiateAuth: WordBool;
07      PostData: OleVariant; const PostContentType: WideString; PostDataIsBinary: WordBool;
08      CanCache: WordBool; NewSession: WordBool; TimeOut: Integer): IDispatch; safecall;
09    function JSONEscape(const Value: WideString): WideString; safecall;
10    function JSONUnEscape(const Value: WideString): WideString; safecall;
11  end;
  • Функция CreateTempFileName возвращает сгенерированное системой имя временного файла с расширением, переданным в параметре Extension.
  • Функция CreateBinaryData создает пустой объект, реализующий интерфейс IBinaryData (описан ниже).
  • Функция DownloadData осуществляет обращение к указанному ресурсу по протоколу http (https), и возвращает ответ сервера в виде объекта, реализующего интерфейс IBinaryData.
    • Параметр Host определяет http-сервер, параметр Url - Url, к которому будет происходить обращение.
    • Параметры UserName и Password определяют имя пользователя и пароль, если http-сервер требует авторизовать пользователя. Параметр NegotiateAuth устанавливает режим аутентификации. (Basic или Negotiate (NTLM)).
    • Параметры PostData, PostContentType и PostDataIsBinary определяют содержимое тела POST-запроса (если не определено, функция отправит GET-запрос). Источник может быть
      • Объектом, реализующим интерфейс IStream
      • Объектом, реализующим интерфейс ISequentialStream
      • Строкой
    • Параметр CanCache позволяет использовать локальный кеш http-ответов.
    • Параметр NewSession требует принудительного создания новой сессии при вызове функции.
    • Параметр TimeOut определяет максимальное время ожидания ответа в секундах.
  • Функция JSONEscape возвращает строку в формате JSON, полученую путем конвертации переданной строки в формат JSON.
  • Функция JSONUnEscape возвращает строку, полученную путем расконвертации переданной JSON строки.

Интерфейс IBinaryData представляет набор двоичных данных:

01  IBinaryData = interface(IDispatch)
02    ['{8A9F7CB3-230A-4048-B938-852CBF6ADB2D}']
03    procedure Append(const Src: OleVariant);
04    procedure Load(const Src: OleVariant);
05    procedure Save(const Dst: OleVariant);
06    function Size: Cardinal;
07    procedure AppendData(Data: Pointer; DataSize: Cardinal);
08    procedure SetData(Data: Pointer; DataSize: Cardinal);
09    procedure GetData(Data: Pointer);
10    function ToString(Encoding: WideString): WideString;
11    procedure FromString(Data: OleVariant);
12    procedure AppendString(Data: OleVariant);
13    function ToBase64: WideString;
14    procedure FromBase64(Data: OleVariant);
15  end;
  • Процедура Load загружает двоичные данные из переданного источника. Источник может быть
    • Объектом, реализующим интерфейс IStream
    • Объектом, реализующим интерфейс ISequentialStream
    • Строкой, содержащей имя файла
  • Процедура Append добавляет двоичные данные из переданного источника. Источник может быть
    • Объектом, реализующим интерфейс IStream
    • Объектом, реализующим интерфейс ISequentialStream
    • Строкой, содержащей имя файла
  • Процедура Save сохраняет двоичные данные в переданный приемник. Приемник может быть
    • Объектом, реализующим интерфейс IStream
    • Объектом, реализующим интерфейс ISequentialStream
    • Строкой, содержащей имя файла
  • Функция ToString переводит данные в строку. Байты, содержашиеся в объекте, будут рассматриваться как содержащие строку в кодировке, заданной параметром Encoding. По умолчанию используется кодировка UTF-8
  • Процедура FromString загружает данные из строки, переданной в параметре Data, перекодировав ее в кодировку UTF-8
  • Процедура AppendString  добавляет данные из строки, переданной в параметре Data, перекодировав ее в кодировку UTF-8
  • Функция ToBase64 возвращает строку, полученную путем кодирования в формат Base64, данных содержащихся в объекте
  • Процедура FromBase64 загружает данные из строки, переданной в параметре Data, раскодировав ее из формата Base64