我正在使用SAP UI5,并且正在尝试从公共odata service获取一些数据。
我在以下代码段中进行了调用。
matched:function(oEvent){
if(!sap.ui.getCore().getModel("emp"))
{
var url = this.getOwnerComponent().getMetadata().getConfig().service.url
console.log("url")
console.log(url)
var oData = new sap.ui.model.odata.ODataModel(url,true)
oData.read("/People?top=5",{
async:true,
success:function(oData,response){
var eModel = new sap.ui.model.json.JSONModel();
eModel.setData(oData);
sap.ui.getCore().setModel("emp", eModel)
}
我已经在Component.js中配置了服务URL,就像这样..
config : {
resourceBundle : "i18n/messageBundle.properties",
service:{
url:"http://services.odata.org/V4/TripPinServiceRW"
}
一旦调用了oData.read()方法,就会从资源文件夹中的js文件中抛出未被捕获的错误。
我检查了浏览器中的网络选项卡,每次调用oData.read()时我都会看到4个调用
1。http://services.odata.org/V4/(S(d1goo34fnpbdpleuuykeha2r))/TripPinServiceRW/ $元数据
2。http://services.odata.org/V4/(S(pgzb5mtb0yp5ytw25xrdfcxl))/TripPinServiceRW/ $元数据
3。http://services.odata.org/V4/TripPinServiceRW/People?top=5
4。http://services.odata.org/V4/(S(zobeyavqtqtykfyyj1m4jqrt))/TripPinServiceRW/People?top=5
除了第三个所有其他人返回状态200,第三个返回状态302。
最后一个请求会返回数据,但查询不起作用,而不是前5个所有记录都被提取。
我想知道我做错了什么,感谢任何帮助.TIA。
仅供参考,UI5的版本为1.34.9
我也使用邮递员测试了公共服务,它工作正常。
答案 0 :(得分:0)
OData-MaxVersion
。如果该服务可以提供符合该版本的响应,那么它将会。top
无法正常工作:请注意,根据OData Spec V2,查询选项的名称为$top
,而不只是top
。所以试试吧:
var oData = new sap.ui.model.odata.ODataModel(url,true)
oData.setHeaders({
"OData-MaxVersion": "2.0"
});
oData.read("/People?$top=5", {
async:true,
success:function(oData,response) {
// ...
}
}