我在使用Kapsel OData插件在设备离线时从商店检索数据时遇到困难。
情况如下:
这是我的代码:
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');
}
);
}
我想知道这是否是应用程序启动方式的问题。我需要一种方法来每次打开相同的应用程序实例,因此离线存储将保留其所有数据。因为Cordova生成的Visual Studio项目不生成.exe文件(只有.appx文件需要签名和侧载才能使用),我继续的方式是:我从Visual Studio以在线模式运行应用程序,然后将其固定到任务栏或开始菜单,关闭它并将设备切换到离线模式,然后从任务栏重新打开它。 但是,越来越多的人认为这种方法不能按预期工作。
任何人都可以确认从任务栏打开的Visual Studio项目应该运行与从VS运行时相同的方式,具有相同的依赖项,库等吗?如果是这种情况(我无法想象为什么会这样),有没有人对这些技术有任何经验,看看潜在的问题是什么?
非常感谢任何帮助。 谢谢!
答案 0 :(得分:0)
好的,我找到了解决问题的方法。如果有人遇到同样的问题,问题是我的离线商店没有被使用(你可以看到Fiddler即使在离线模式下也有对后端系统的出站请求)。
Visual Studio项目确实使商店从一个版本或启动到下一个版本。