| WEB-приложение Сведение отчетности- Взаимодействие с внешними веб-сервисами (раздел целиком) (21.11.2024) | (одним файлом) |
Взаимодействие с внешними веб-сервисами |
Сервис предоставляет возможность реализации взаимодействия с внешними веб-сервисами. Функционал основан на механизме пользовательских приложений. Пример подобной реализации представлен в поставляемом пользовательском приложении "WebServicesIntegrationCROC" в виде VBScript. Перед началом использования данного примера, необходимо задать/исправить значения следующих параметров (Файл -> Сервис -> Параметры, раздел "Первичные/сводные отчеты"):
В данном примере, реализована NTML аутентификация для взаимодействия с внешним веб-сервисом (т.е. по пользователям входящим в домен). В штатной поставке данного пользовательского приложения, для аутентификации передаются реквизиты пользователя, из под которого работает сервер приложений. Но т.к. штатным режимом работы сервера приложений является работа в виде сервиса Windows (а по умолчанию, все сервисы работают под локальной учетной записью "NT AUTHORITY\SYSTEM", т.е. не являются членами домена), то для успешной аутентификации необходимо выбрать 1 из следующих вариантов:
|
1. Модуль для взаимодействия по протоколу 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;
Интерфейс 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;
|