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

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

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

  IProvider = interface(IDispatch)
    ['{5CC36760-E292-44AA-B542-A32865828DAC}']
    function CreateTempFileName(const Extension: WideString): WideString; safecall;
    function CreateBinaryData: IDispatch; safecall;
    function DownloadData(const Host: WideString; const Url: WideString;
      const UserName: WideString; const Password: WideString; NegotiateAuth: WordBool;
      PostData: OleVariant; const PostContentType: WideString; PostDataIsBinary: WordBool;
      CanCache: WordBool; NewSession: WordBool; TimeOut: Integer): IDispatch; safecall;
    function JSONEscape(const Value: WideString): WideString; safecall;
    function JSONUnEscape(const Value: WideString): WideString; safecall;
  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 представляет набор двоичных данных:

  IBinaryData = interface(IDispatch)
    ['{8A9F7CB3-230A-4048-B938-852CBF6ADB2D}']
    procedure Append(const Src: OleVariant);
    procedure Load(const Src: OleVariant);
    procedure Save(const Dst: OleVariant);
    function Size: Cardinal;
    procedure AppendData(Data: Pointer; DataSize: Cardinal);
    procedure SetData(Data: Pointer; DataSize: Cardinal);
    procedure GetData(Data: Pointer);
    function ToString(Encoding: WideString): WideString;
    procedure FromString(Data: OleVariant);
    procedure AppendString(Data: OleVariant);
    function ToBase64: WideString;
    procedure FromBase64(Data: OleVariant);
  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