Update: Marc AD ndersson om erop te wijzen dit grote stuk van info: http://blogs.Office.com/2014/08/13/JSON-Light-Support-rest-SharePoint-API-Released/. Dat verklaart veel :).
Dat is misschien wel de ergste titel van een blogpost ooit! Hoe dan ook.
Ik meestal doe alle van mijn prototyping tegen een O365 exemplaar. Ik heb mijn persoonlijke exemplaar, zodat ik niet hoef te worden bezorgd op het gebied van iemand anders. Als een terzijde-Onthoud wanneer wij uitgevoerd rond virtuele machines op onze laptops met mos-SQL Server, IIS, beslissende Hyper-V vs. VMWare? Hoe dan ook...
Ik had ontwikkeld een app gebruikt Angular in deze omgeving die doet, onder andere, Dit:
$http.Get(serverUrl)
.succes(functie(gegevens, status, headers, config) {var getLinksResponse = data;
getLinksResponse.value.forEach(functie(theResult) {
// en zo verder en zo schuim
Dit werkte prima in twee verschillende SharePoint online omgevingen. Echter, Toen mijn collega het ported aan de aanleg van een Cloudshare, Hij kreeg een HTTP 406 fout (die was de eerste keer dat ik ooit kreeg die ene, dus... yay, Denk ik). We heb een beetje van het onderzoek en merkte dat de "Accept" header uitgeschakeld was. SharePoint online was perfect gelukkig met:
Accepteren: application/json
Behalve het cloudshare exemplaar (Wat is SP op prem, gehost op een virtuele server) wilde de klassieke "odata = verbose" toegevoegd ook:
Accepteren: application/json;odata = verbose
Om dat te bevestigen, Wij toegevoegd de kop als zodanig:
var config = {headers: {
'Accepteren': ' application/json;odata = verbose'
}
};$http.Get(serverUrl,config)
.succes(functie(gegevens, status, headers, config) {var getLinksResponse = data;
getLinksResponse.value.forEach(functie(theResult) {
// en zo verder en zo schuim
Die verlost van de 406, maar het ook de indeling van de reactie gewijzigd. Het was meer... uitgebreide. (haha!) Meer veranderingen nodig waren en hier is het eindresultaat:
var config = {headers: {
'Accepteren': ' application/json;odata = verbose'
}
};$http.Get(serverUrl,config)
.succes(functie(gegevens, status, headers, config) {var getLinksResponse = data;
getLinksResponse.d.Results.forEach(functie(theResult) {
// en zo verder en zo schuim
Dit alleen omgezet in een 30 minuut probleem voor ons, Dus wij lucked uit. Hopelijk vindt iemand dit nuttig.
</einde>
Paul:
Ik denk dat u werden gevangen door de JSON lite optie uitgelegd in dit bericht op de Office-Blogs:
http://blogs.office.com/2014/08/13/json-light-support-rest-sharepoint-api-released/
Sinds die verandering, Als u geen waarde opgeeft, het standaard minimalmetadata. Ik denk niet dat dit heeft gemaakt om op gebouwen installaties nog, dus de verbinding verbreken.
M.
Bedankt! Dat is grote info.