HTTP 406 Error quan s'utilitza $http.get Angular contra SharePoint resta punts finals

Actualització: Marc d'anunci ndersson assenyalar aquesta gran peça d'informació: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Que explica molt :).

Que pot ser el pitjor títol d'una entrada de blog mai! Anyhoo.

Solen fer tota la meva prototipatge contra una instància de O365. Tinc el meu exemple personal per tal que no ha de preocupar per afectar a ningú més. Com acotació al marge – recordeu quan anomenem realitzades al voltant de màquines virtuals en nostres portàtils amb molsa-SQL Server, L'IIS, decidir Hyper-V contra. VMWare? Anyhoo...

Jo havia desenvolupat una aplicació utilitzant Angular en aquest entorn que fa, entre altres coses, això:

$http.Get(URLServidor)
.èxit(funció(dades, l'estat, capçaleres, config) {

var getLinksResponse = dades;

getLinksResponse.value.forEach(funció(theResult) {

// i així successivament i així escuma

Això estava treballant just bé en dos diferents SharePoint entorns en línia. No obstant això, Quan el meu col lega portat-lo a una instància de Cloudshare, ell estava aconseguint un HTTP 406 error (que era la primera vegada que mai arribava aquell, Així que... yay, Suposo que). Vam fer una mica de recerca i s'adonava que l'encapçalament "Accepta" era fora. Era molt feliç amb SharePoint en línia:

Acceptar: aplicació/json

Però l'exemple cloudshare (que és SP en prem, allotjat en un servidor virtual) volia el clàssic "odata = verbosa" afegit en, així:

Acceptar: aplicació/json;OData = depuraci ≤

D'arreglar allò, Hem afegit la capçalera com a tal:

var config = {capçaleres: {
"Accepta": ' aplicació/json;OData = depuraci ≤ "
}
};

$http.Get(URLServidor,config)
.èxit(funció(dades, l'estat, capçaleres, config) {

var getLinksResponse = dades;

getLinksResponse.value.forEach(funció(theResult) {

// i així successivament i així escuma

Que es va desfer de la 406, però també va canviar el format de la resposta. Es tractava més aviat... detallat. (Haha!) Calien canvis més i aquí està el resultat final:

var config = {capçaleres: {
"Accepta": ' aplicació/json;OData = depuraci ≤ "
}
};

$http.Get(URLServidor,config)
.èxit(funció(dades, l'estat, capçaleres, config) {

var getLinksResponse = dades;

getLinksResponse.d.Results.forEach(funció(theResult) {

// i així successivament i així escuma

Això només es va convertir en un 30 minut problema per a nosaltres, així ens va tenir sort a. Esperançadorament algú es troba aquesta útil.

</final>

2 comentaris a "HTTP 406 Error quan s'utilitza $http.get Angular contra SharePoint resta punts finals

Deixi una contestació

no es publicarà la seva adreça de correu electrònic. Els camps necessaris estan marcats *