Mise à jour: Marc AD ndersson a souligné ce grand morceau de l'info: http://blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Qui explique beaucoup de choses :).
C'est peut-être le pire titre d'un billet de blog jamais! Anyhoo.
Généralement, je fais toutes mes prototypage sur une instance d'Office 365. J'ai mon instance personnelle afin que je ne dois pas être inquiet qui touchent tout le monde. Soit dit en passant – Rappelez-vous lorsque nous appelons menées autour des machines virtuelles sur nos ordinateurs portables avec MOSS – SQL Server, IIS, décidant de Hyper-V vs. VMWare? Anyhoo...
J'avais mis au point une application à l'aide de moment angulaire dans cet environnement qui fait, entre autres choses, ce:
$http.Get(serverUrl)
.succès(fonction(données, statut, en-têtes, config) {var getLinksResponse = données;
getLinksResponse.value.forEach(fonction(theResult) {
// et ainsi de suite et donc de mousse
Cela fonctionnait très bien dans deux environnements SharePoint en ligne. Cependant, Quand mon collègue il porté vers une instance de Cloudshare, il devenait un HTTP 406 erreur (qui était la première fois jamais, je suis celui-là, donc... yay, Je pense). Nous avons fait quelques recherches et a remarqué que l'en-tête « Accepter » était éteint. SharePoint en ligne était parfaitement heureux avec:
Accepter: application/json
Mais l'instance de cloudshare (qui est SP sur prem, hébergé sur un serveur virtuel) voulait le classique « odata = verbose "ajouté dans ainsi:
Accepter: application/json;OData = verbose
Pour résoudre ce, Nous avons ajouté l'en-tête comme tel:
var config = {en-têtes: {
« Accepter »: « application/json;OData = verbose'
}
};$http.Get(serverUrl,config)
.succès(fonction(données, statut, en-têtes, config) {var getLinksResponse = données;
getLinksResponse.value.forEach(fonction(theResult) {
// et ainsi de suite et donc de mousse
Qui s'est débarrassé de la 406, mais il a aussi changé le format de la réponse. C'était plus... bavard. (haha!) Plusieurs modifications ont été nécessaires et voici le résultat final:
var config = {en-têtes: {
« Accepter »: « application/json;OData = verbose'
}
};$http.Get(serverUrl,config)
.succès(fonction(données, statut, en-têtes, config) {var getLinksResponse = données;
getLinksResponse.d.Results.forEach(fonction(theResult) {
// et ainsi de suite et donc de mousse
C'est seulement transformée en un 30 problème minute pour nous, donc nous avons eu de la chance. J'espère que quelqu'un le trouve utile.
</fin>