У меня возникают трудности с использованием подключаемого модуля 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, с теми же зависимостями, библиотеками и т. д.? Если это так (и я действительно не могу представить, почему это не так), есть ли у кого-нибудь опыт работы с этими технологиями и кто-нибудь знает, в чем может быть потенциальная проблема?
Любая помощь будет принята с благодарностью. Спасибо!