2016-05-10 2 views
0

Я использую SAP UI5 и пытался получить некоторые данные из общедоступной odata service.oData.read() метод triggering uncaught error

Я делаю вызов в следующем фрагменте кода.

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) 

    } 

И я настроил URL службы в Component.js как так ..

 config : { 
     resourceBundle : "i18n/messageBundle.properties", 
     service:{ 
      url:"http://services.odata.org/V4/TripPinServiceRW" 
     } 

Как только метод oData.read() вызывается неперехваченное ошибка возникает .. из JS файлы в папке ресурсов.

Error log

Я проверил вкладку сети в браузере, каждый раз 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 все записи извлекаются.

Я хотел бы знать, если я что-то делаю неправильно, всякая помощь приветствуется.

FYI версия для UI5 является 1.34.9

Кроме того, я испытал на государственную службу с помощью почтальона, он работает нормально.

+0

Я угадываю на основе URL, что служба OData вы используете OData V4, поэтому вы должны использовать v4 ODataModel, которая должна быть доступна в следующей версии SAPUI5. – hirse

+0

@hirse благодарим вас за ввод. – Abhishek

+0

@hirse вы могли бы предложить любую пробную службу odata с версией 2.0, чтобы я мог подтвердить это? – Abhishek

ответ

0
  1. Что касается несоответствия версии OData, упомянутого в комментариях: Вы можете попытаться включить заголовок запроса OData-MaxVersion. Если служба может предоставить ответ, соответствующий этой версии, он будет.
  2. Для 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) { 
     // ... 
    } 
} 
Смежные вопросы