2017-08-15 87 views
6

我们的客户已将其系统更改为SAP,并希望应用通过SAP界面显示数据。我们决定使用SAPUI5框架+ WebIDE来开发应用程序,因为它提供了一个非常好的控件,包含一个可靠的MVC设计以及用于SAP接口的易于使用的云连接器。云连接器无法在设备上加载JSON数据

我们已经配置的连接器是这样的:

新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 
} 

这是我们在component.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"}

请问如何解决这个问题?

+0

与SAP,这样对你不好)。您是否尝试过使用调试代理(charles/fiddler/burp)来检查设备发送的查询?也许你会看到与浏览器不同的地方。您是否尝试将完整的网址(https://xxxx.yyy)展示为“/ mynews ...” – wargre

+0

@wargre完整的网址。它只是不起作用的目的地。在我最后的iOS项目中,我找不到任何对目标的引用。感觉就像我的iOS项目缺少neo-app文件或其他东西。 –

+1

我不是HAT专家,但恐怕neo-app.json文件仅在WebIDE内部使用,或者在SAP云中部署的应用程序(例如在Portal服务中)中使用。您可以确认在部署应用程序时此文件已导出吗? – fabiopagoti

回答

0

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

你真正想要做的是定义你的目标你的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