HTTP 406 Errore quando si utilizza $http.get angolare contro SharePoint resto punti finali

Aggiornamento: Marc AD ndersson ha sottolineato questo grande pezzo di informazioni: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Questo spiega tante :).

Che può essere il peggior titolo di un post del blog mai! Anyhoo.

In genere faccio tutti i miei prototipi contro un'istanza di O365. Ho la mia istanza personale in modo che non devo preoccuparmi che colpisce chiunque altro. Come una digressione – ricorda quando chiamiamo trasportati intorno macchine virtuali sui nostri computer portatili con MOSS – SQL Server, IIS, decidendo vs Hyper-V. VMWare? Anyhoo...

Avevo sviluppato un app utilizzando angolare in questo ambiente che fa, tra le altre cose, Questo:

$http.Get(serverUrl)
.successo(funzione(dati, status, intestazioni, config) {

var getLinksResponse = dati;

getLinksResponse.value.forEach(funzione(theResult) {

// e così via e così schiuma

Questo stava lavorando bene in due diversi ambienti di SharePoint online. Tuttavia, Quando il mio collega portato a un'istanza di Cloudshare, Egli fu sempre un HTTP 406 errore (che era la prima volta che ho mai avuto che uno, quindi... evviva, Suppongo). Abbiamo fatto un po' di ricerche e ho notato che l'intestazione "Accept" era spento. SharePoint online era perfettamente felice con:

Accettare: applicazione/json

Ma l'istanza cloudshare (che è SP su prem, ospitato in un server virtuale) ha voluto il classico "odata = verbose" aggiunto pure:

Accettare: applicazione/json;OData = verbose

Alle difficoltà che, Abbiamo aggiunto l'intestazione come tale:

var config = {intestazioni: {
'Accettare': ' applicazione/json;OData = verbose'
}
};

$http.Get(serverUrl,config)
.successo(funzione(dati, status, intestazioni, config) {

var getLinksResponse = dati;

getLinksResponse.value.forEach(funzione(theResult) {

// e così via e così schiuma

Che si è sbarazzato della 406, ma ha anche cambiato il formato della risposta. Era più... dettagliato. (ma ha anche cambiato il formato della risposta.  Era più... prolisso.!) Ulteriori cambiamenti sono stati richiesti ed ecco il risultato finale:

var config = {intestazioni: {
'Accettare': ' applicazione/json;OData = verbose'
}
};

$http.Get(serverUrl,config)
.successo(funzione(dati, status, intestazioni, config) {

var getLinksResponse = dati;

getLinksResponse.d.Results.forEach(funzione(theResult) {

// e così via e così schiuma

Questo solo trasformato in una 30 problema minuto per noi, così siamo stati fortunati. Speriamo che qualcuno trova questo utile.

</fine>

2 pensieri su "HTTP 406 Errore quando si utilizza $http.get angolare contro SharePoint resto punti finali

Lasciare una risposta

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *