Запрос онлайн данных в СПИК


Чтобы сделать запрос онлайн данных (ОД), необходимо выполнить следующие действия:

  1. Пройти авторизацию в системе СКАУТ (если не пройдена).
  2. Получить список идентификаторов Объектов мониторинга, по которым необходимо получить онлайн данные.
  3. Сформировать запрос для подписки на получение ОД и указать список идентификаторов объектов мониторинга, по которым мы хотим получать данные.
  4. Подписаться на онлайн данные, вызвав у сервиса SpicOnlineDataService метод Subscribe с параметром, полученным на шаге 2. При успешном выполнении сервис вернёт SpicOnlineDataSubscriptionResponse. В нём будет находиться ключ сессии онлайн данных.
  5. Получить онлайн данные по подписке. Вызвать у сервиса SpicOnlineDataService метод GetOnlineData, передав в качестве параметра идентификатор сессии онлайн данных, полученной на предыдущем шаге (по полученному идентификатору подписки можно много раз получать онлайн-данные).

Реализацию данного алгоритма на JS можно найти в рецепте, иллюстрирующем отображение онлайн данных на карте. 
Для реализации данного алгоритма на C# необходимо:

Пример на C#.

public class OnlineDataExample 
{ 
    //заглушка сервиса подписок на получение онлайн данных 
    private readonly SpicSoapOnlineDataServiceClient _dataServiceClient;

    public OnlineDataExample() 
    { 
        _dataServiceClient = new SpicSoapOnlineDataServiceClient(); 
        _dataServiceClient.Endpoint.Behaviors.Add(new AuthorizationBehavior()); 
    }

    /// <summary> 
    /// Метод получения онлайн-данных 
    /// </summary> 
    /// <remarks>Необходимо пройти авторизацию перед вызовом этого метода</remarks> 
    /// <param name="units">Идентификаторы объектов, по которым хотим получить онлайн-данные</param> 
    public SpicOnlineDataCollection GetOnlineData(int[] unitIds) 
    { 
        var subscription = new SpicOnlineDataSubscriptionRequest { UnitIds = unitIds }; 
        var response = _dataServiceClient.Subscribe(subscription); 
        var onlineData = _dataServiceClient.GetOnlineData(new SpicOnlineDataSessionId { Id = response.SessionId.Value.Id }); 
        return onlineData.OnlineDataCollection; 
    } 
}

Пример на JS.

var session = subscribeOnServer(unitIds); 
var onlineData = getOnlineDataOnServer(session.Id); 
return onlineData;

function subscribeOnServer(unitIds) { 
    return provider.POSTAuthorized(subscribeUrl, 
        { 
            UnitIds: unitIds 
        }, 
        getAuthorizationToken()).response.SessionId; 
}

function getOnlineDataOnServer(subscriptionId) { 
    return provider.POSTAuthorized(getOnlineDataUrl, 
        { 
            Id: subscriptionId 
        }, 
        getAuthorizationToken()).response.OnlineDataCollection; 
}



Номер материала: 490
Отправлено: Wed, Sep 12, 2018
Последнее обновление: Sun, Oct 7, 2018
Отправлено: Анисимов Максим Михайлович [m.anisimov@scout-gps.ru]

Online URL: https://kb.scout-gps.ru/article/Запрос-онлайн-данных-в-СПИК-490.html