2016-03-21 4 views
0

Ich versuche, Daten von dem Server zu erhalten:OData Modell abrufen keine Daten vom Server

 $this.oModel = new sap.ui.model.odata.v2.ODataModel("https://myserver.com/sap/opu/odata/sap/zumu_contact_person_srv",{ 
      user: 'TEST', 
      password: '12345678', 
      headers: { 
       "Accept": "application/json", 
       "Accept-Language": "ru-RU", 
       "DataServiceVersion": "2.0", 
       "MaxDataServiceVersion": "2.0", 
       "X-CSRF-Token": "Fetch" 
      } 
     }); 

     $this.getView().setModel($this.oModel, "ContactPerson"); 

     console.log($this.oModel); 

In Ansicht Ich habe Tabelle:

<Table id="Listing" class="tableList" mode="MultiSelect" items="{path: 'ContactPerson>/contactsList'}"> 
       <columns> 
        <Column id="vendorNum" minScreenWidth="Tablet" > 
         <Text text="{i18n>vendorNum}"/> 
        </Column> 
        <Column id="recipientType" minScreenWidth="Tablet" > 
         <Text text="{i18n>recipientType}"/> 
        </Column> 
        <Column id="supplierName" minScreenWidth="Tablet" > 
         <Text text="{i18n>supplierName}"/> 
        </Column> 
       </columns> 
       <items> 
        <ColumnListItem> 
         <cells> 
          <Input value="{ContactPerson>Parnr}" editable="false" /> 
         </cells> 
         <cells> 
          <Input value="{ContactPerson>Ebonu}" editable="false" /> 
         </cells> 
         <cells> 
          <Input value="{ContactPerson>NameFirst}" editable="false" /> 
         </cells> 
        </ColumnListItem> 
       </items> 
      </Table> 

Warum Daten kommen nicht mit dem Server ? Objekt $this.oModel.oData - ist leer. Was könnte das Problem sein? Oder mache ich etwas falsch?

+0

Können Sie überprüfen, ob eine Anfrage gestellt wurde und wenn ja, welches Ergebnis wird zurückgegeben? – hirse

+0

@hirse, Er sendet drei Anfragen: '/ zumu_contact_person_srv/$ metadata','/zumu_contact_person_srv/','/zumu_contact_person_srv/$ batch'. $ metadata - 200 ok, zumu_contact_person_srv - 20 ok (Anfrage mit Header 'x-csrf-token: Fetch'), $ batch - 403 Verboten. Er sagt: 'CSRF-Token-Validierung fehlgeschlagen'. Ich verstehe nicht warum? – sanu0074

+0

Offenbar sind Sie nicht mit dem richtigen Benutzer angemeldet oder Ihr Benutzer verfügt nicht über ausreichende Berechtigungen. – hirse

Antwort

0

1) Der Fehler, den Sie erhalten, zeigt an, dass das Problem mit Ihrer Benutzer-ID und Ihrem Kennwort auftritt. Übergeben Sie einfach diese Anfrage von DHC in Ihren Google Chrome Apps mit Ihren Headern und Sie erhalten den gleichen Fehler vom Server, was bedeutet, dass ein Problem mit der userId und dem Passwort besteht.

2) Da dies nur eine Abrufanforderung ist, brauchen Sie die CSRF-Token-Validierung nicht. Entfernen Sie daher die Zeile "X-CSRF-Token": "Fetch"
aus Ihren Headern.

"X-CSRF-Token": "Fetch" sollte verwendet werden, um das CSRF-Token von Ihrem Server zu erhalten und das Token, das Sie vom Server erhalten haben, sollte in POST- oder PUT-Anfragen an den Server zurückgegeben werden.

Versuchen Sie die oben genannten zwei und es sollte funktionieren.