Автономное извлечение данных в проекте Cordova Windows

У меня возникают трудности с использованием подключаемого модуля Kapsel OData для извлечения данных из хранилища, когда устройство находится в автономном режиме.

Вот ситуация:

  • Приложение Cordova для платформы Windows
  • Когда приложение открывается, я начинаю с открытия хранилища для моей службы OData (аналогично службе Northwind).
  • Магазин создан и открыт. Затем я пытаюсь получить данные из хранилища, используя OData.read или устанавливая модель, а затем вызывая для нее read().
  • Магазин успешно откроется. Однако мой вызов для чтения данных завершится успешно, когда устройство подключено к сети, и завершится ошибкой, когда оно не в сети, независимо от того, какой из двух предыдущих методов я использую.

Вот мой код:

function openStore() {   
    var properties = {  
        "name": "Emergency",  
        "host": applicationContext.registrationContext.serverHost,  
        "port": applicationContext.registrationContext.serverPort,  
        "https": applicationContext.registrationContext.https,  
        "serviceRoot": appId,    
        "definingRequests": {  
            "Products": "/Products"  
        }  
    };  
    store = sap.OData.createOfflineStore(properties);  
    store.open(openStoreSuccessCallback, errorCallback);  
}  

function openStoreSuccessCallback() { 
    sap.OData.applyHttpClient();
    retrieveWithModel();//retrieveWithOData();
}

function retrieveWithModel() {
    var uri = applicationContext.applicationEndpointURL; 
    var user = applicationContext.registrationContext.user; 
    var password = applicationContext.registrationContext.password; 
    var headers = { "X-SMP-APPCID": applicationContext.applicationConnectionId }; 
    var oModel = new sap.ui.model.odata.ODataModel(uri, { 
        json: "true", 
        user: user, 
        password: password, 
        headers: headers 
    }); 

    sap.ui.getCore().setModel(oModel); 
    oModel.read("/Products", { 
        success: function (oEvent) { 
            var msg = new Windows.UI.Popups.MessageDialog("Success"); 
            msg.showAsync(); 
        }, 
        error: function (err) { 
            console.log("you have failed"); 
            var msg = new Windows.UI.Popups.MessageDialog("Fail"); 
            msg.showAsync(); 
        } 
    }); 
}

function retrieveWithOData() {
    var sURL = applicationContext.applicationEndpointURL + "/Products";  
    var oHeaders = {};  
    oHeaders['Authorization'] = authStr;  
    oHeaders['X-SMP-APPCID'] = applicationContext.applicationConnectionId;  
    //oHeaders['Content-Type'] = "application/json";  
    //oHeaders['X-CSRF-Token'] = "FETCH";  
    var request = {  
        headers: oHeaders,  
        requestUri: sURL,  
        method: "GET"  
    };  
    OData.read(request,   
        function (data, response) {  
            console.log('Success');  
        },   
        function (err) {  
            console.log('Fail');  
        }  
    );
}
  • Версия Kapsel SDK — 3.8.0.
  • SMP SDK — это SP08.
  • Кордова версии 5.3.3

Мне интересно, если это проблема с тем, как приложение запускается. Мне нужен способ каждый раз открывать один и тот же экземпляр приложения, чтобы в автономном магазине сохранялись все его данные. Поскольку проекты Visual Studio, сгенерированные Cordova, не создают файл .exe (только файлы .appx, которые необходимо подписать и загрузить для использования), я поступаю следующим образом: я запускаю приложение в онлайн-режиме из Visual Studio, затем закрепите его на панели задач или в меню «Пуск», закройте его и переведите устройство в автономный режим, а затем снова откройте его с панели задач. Однако все чаще кажется, что этот метод не работает должным образом.

Может ли кто-нибудь подтвердить, что проект Visual Studio, открытый с панели задач, должен работать так же, как и при запуске из VS, с теми же зависимостями, библиотеками и т. д.? Если это так (и я действительно не могу представить, почему это не так), есть ли у кого-нибудь опыт работы с этими технологиями и кто-нибудь знает, в чем может быть потенциальная проблема?

Любая помощь будет принята с благодарностью. Спасибо!


person Chris Neve    schedule 04.11.2015    source источник


Ответы (1)


Хорошо, я нашел решение своей проблемы. На случай, если кто-то когда-нибудь столкнется с такой же проблемой, проблема заключалась в том, что мой автономный магазин не использовался (с помощью Fiddler вы можете увидеть исходящие запросы к серверной системе даже в автономном режиме).

Проект Visual Studio сохраняет магазин от одной сборки или запуска до другой.

person Chris Neve    schedule 05.11.2015