Как работать с веб-сервисом из Fore?

Описание

Веб-сервис PP.SOM в первую очередь предназначен для разработки систем на базе веб-приложений. Однако иногда может возникнуть необходимость обратиться к веб-сервису из разрабатываемых на базе настольного приложения сборок/форм/модулей. В языке Fore для взаимодействия с различными сетевыми ресурсами посредством POST/GET запросов предназначен класс NetHttpService сборки Net. Работа с веб-сервисом осуществляется по протоколу SOAP.

Для работы с веб-сервисом:

  1. Создайте экземпляр класса NetHttpService, укажите в свойстве Url адрес веб-сервиса и выполните метод Connect. Правила формирования адреса веб-сервиса представлены подразделе «Подключение к веб-сервису».

  2. Полученный объект, описываемый интерфейсом INetCommand, приведите к интерфейсу INetHttpCommand и задайте настройки для работы с веб-сервисом: Command = NetHttpCommandType.Post;

  3. Сформируйте SOAP-запрос для выполнения требуемой операции. Описание операций и примеры их использования представлены в подразделе «Операции веб-сервиса»;

  4. Сформированный SOAP-запрос передайте в метод Start для отправки запроса веб-сервису.

  5. В свойстве Result будет доступен ответ веб-сервиса.

Пример

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

Sub TestSOAPRequest;
Var
    Service: INetHttpService;
    Cmd: INetCommand;
    HttpCmd: INetHttpCommand;
    Request: Variant;
    Response, Id: string;
Begin
    Service := New NetHttpService.Create;
    Service.Url := "http://localhost:9090/axis2/services/PP.SOM.Som";
    // Подключение к веб-сервису
    Cmd := Service.Connect;
    HttpCmd := Cmd As INetHttpCommand;
    HttpCmd.Command := NetHttpCommandType.Post;
    HttpCmd.AcceptLanguage := "ru";
    // Подключение к репозиторию
    Request := "<OpenMetabase>" +
        "<tDef><id>TEST_REPOSITORY</id></tDef>" +
        "<tCreds><user><id>user</id></user><pass>password</pass></tCreds>" +
        "</OpenMetabase>" ;
    Cmd.Start(Request);
    Response := Cmd.Result As String;
    Id := Response.SubString(Response.IndexOf("<id>") + 4, Response.IndexOf("</id>") - Response.IndexOf("<id>") - 4);
    Debug.WriteLine("Response: " + Response);
    Debug.WriteLine("Moniker: " + Id);
    //...
    // Дальнейшая работа с репозиторием
    //...
    // Отключение от репозитория
    Request := "<CloseMetabase><tMb><id>" + id + "</id></tMb></CloseMetabase>";
    Cmd.Start(Request);
End Sub TestSOAPRequest;

См. также:

Вопросы и ответы