我在使用Kapsel OData插件在设备脱机时从商店检索数据时遇到困难。Cordova Windows项目中的离线数据检索
这里的情况是:
- 科尔多瓦应用Windows平台
- 当应用程序打开时,我通过对我的OData服务开店(类似于罗斯文服务)启动
- 商店被创建并打开。然后,我尝试使用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
我想知道这是否是应用程序启动方式的问题。我需要一种方法来每次打开应用程序的相同实例,因此脱机存储将保留其所有数据。由于Cordova生成的Visual Studio项目不生成.exe文件(只有.appx文件需要进行签名和侧载才能使用),我继续的方式是:我从Visual Studio在联机模式下运行应用程序,然后将其固定到任务栏或开始菜单,关闭它并将设备切换到离线模式,然后从任务栏重新打开它。 但是,越来越多的似乎这种方法不能按预期工作。
任何人都可以确认从任务栏打开的Visual Studio项目应该以与从VS运行时相同的方式运行,具有相同的依赖项,库等?如果是这种情况(我真的不能想象为什么它不会),有没有人有这些技术的经验,看看有什么潜在的问题?
任何帮助将不胜感激。 谢谢!