Cloud Connector 无法在设备上加载 JSON 数据

Cloud connector fails to load JSON data on device

提问人:Martin Braun 提问时间:8/15/2017 最后编辑:Boghyon HoffmannMartin Braun 更新时间:12/28/2020 访问量:786

问:

我们的客户已将其系统更改为SAP,并希望应用程序通过SAP界面显示数据。我们决定使用 SAPUI5 框架 + WebIDE 来开发应用程序,因为它提供了非常好的控制多样性,具有可靠的 MVC 设计以及易于使用的 SAP 界面云连接器。

我们配置了一个连接器,如下所示:

neo-app.json

{
  "welcomeFile": "/webapp/index.html",
  "routes": [
    {
      "path": "/resources",
      "target": {
        "type": "service",
        "name": "sapui5",
        "entryPath": "/resources"
      },
      "description": "SAPUI5 Resources"
    },
    {
      "path": "/test-resources",
      "target": {
        "type": "service",
        "name": "sapui5",
        "entryPath": "/test-resources"
      },
      "description": "SAPUI5 Test Resources"
    },
    {
      "path": "/mynews",
      "target": {
        "type": "destination",
        "name": "MyNews_CMS",
        "preferLocal": true
      }
    }
  ],
  "sendWelcomeFileRedirect": true
}

这是我们在组件.js中的测试调用:

try {                                                                               
  $.get("/mynews/?json=2", function(data, status) {                                                                                 
    alert("success: " + JSON.stringify(data));                                                                              
  }).fail(function(arg1) {                                                                                 
    alert("error: " + JSON.stringify(arg1));                                                                               
  });                                                                           
} catch (err) { 
  alert("global error: " + err);
}

在我们的WebIDE中,我们从SAP连接器API中获得了一个完整的JSON,其中包含所有需要的数据,但是,一旦我们构建应用程序并将其发布到任何使用HAT(Android,iOS,甚至签名)的设备上,请求就会失败。

首先,它发出警报(空对象),然后发出警报{}error: {"readyState":0,"status":0,"statusText":"error"}

我们该如何解决这个问题?

科尔多瓦 sapui5 sap-web-ide sap-cloud-connector

评论

0赞 Jonas 9/5/2017
@wargre 完整的 url 有效。它只是不起作用的目的地。在我的最终 iOS 项目中,我找不到任何对目标的引用。感觉我的 iOS 项目缺少 neo-app 文件或其他东西。
1赞 fabiopagoti 11/18/2017
我不是 HAT 专家,但恐怕neo-app.json文件仅在 WebIDE 或 SAP Cloud 中部署的应用程序(例如在 Portal 服务中)中使用。能否确认在部署应用时已导出此文件?

答:

-1赞 Sebastian Limbach 2/17/2018 #1

与您的 UI5 应用程序无关。它甚至不需要让应用程序工作,因为只有SAP WebIDE解释并使用此文件进行配置。neo-app.json

你真正想做的是在你的中定义你的目的地:manifest.json

...
"dataSources": {
   "ODataEndpoint": {
        "uri": "https://yourappname.hana.ondemand.com/your/odata/path/",
        "type": "OData",
        "settings": {
           "odataVersion": "2.0",
           "localUri": "/your/odata/path/"
        }
    }
}
...
"models": {
    "": {
        "dataSource": "ODataEndpoint"
    }
}
...

如果这不起作用,则应调试设备网络活动,以查看调用了哪个 URL。

如何在 iOS 应用程序中调试网络调用:https://cordova.apache.org/docs/en/latest/guide/next/#ios-debugging

如何在 Android 应用程序中调试网络调用:https://cordova.apache.org/docs/en/latest/guide/next/#chrome-remote-debugging

评论

1赞 Marc 4/29/2020
如果有人来到这里并阅读此答案:neo-app.json与您的 UI5 应用程序有关。如果你的应用在 SAP Cloud Platform 中运行,这是告知应用要加载哪个后端的方法。请在您的清单中没有硬编码的绝对 URL。