HTTP 406 Fejl når du bruger kantede $http.get mod SharePoint resten slutpunkter

Opdatering: Marc AD ndersson påpegede dette store stykke af info: http://Blogs.Office.com/2014/08/13/JSON-Light-support-rest-SharePoint-API-Released/. Det forklarer en masse :).

Det kan være den værste titlen på et blog-indlæg nogensinde! Anyhoo.

Jeg typisk gøre alle mine prototyping mod en O365-forekomst. Jeg har min personlige instans, så jeg ikke behøver at være bekymret om påvirker alle andre. Som en sidebemærkning--huske, når vi kalder udført omkring virtuelle maskiner på vores bærbare computere med mos-SQL Server, IIS, besluttende Hyper-V vs. VMWare? Anyhoo...

Jeg havde udviklet en app ved hjælp af kantede i dette miljø, der gør, blandt andet, Dette:

$http.get(serverUrl)
.succes(funktion(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funktion(Myndigheden) {

// og så videre og så skum

Det virkede fint i to forskellige SharePoint online miljøer. Dog, Når min kollega porteret det til en forekomst af Cloudshare, Han fik en HTTP 406 fejl (der var første gang jeg nogensinde fik at man, så... yay, Jeg gætter). Vi gjorde en smule forskning og bemærket, at overskriften "Acceptere" var off. SharePoint online var helt tilfreds med:

Acceptere: ansøgning/json

Men cloudshare forekomsten (der er SP på prem, hostet i en virtuel server) ønskede klassiske "odata = verbose" tilføjet i samt:

Acceptere: ansøgning/json;OData = verbose

Hen til lave at, vi tilføjede i hovedet som sådan:

var config = {overskrifter: {
'Acceptere': «ansøgning/json;OData = verbose'
}
};

$http.get(serverUrl,config)
.succes(funktion(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funktion(Myndigheden) {

// og så videre og så skum

Der fik befri for den 406, men det også ændret format af respons. Det var mere... verbose. (haha!) Flere ændringer var nødvendige og her er det endelige resultat:

var config = {overskrifter: {
'Acceptere': «ansøgning/json;OData = verbose'
}
};

$http.get(serverUrl,config)
.succes(funktion(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.d.Results.forEach(funktion(Myndigheden) {

// og så videre og så skum

Dette kun forvandlet til et 30 minut problem for os, så vi lucked ud. Forhåbentlig finder nogen dette nyttigt.

</slutningen>

2 tanker om ”HTTP 406 Fejl når du bruger kantede $http.get mod SharePoint resten slutpunkter

Efterlad et svar

Din e-mail adresse vil ikke blive offentliggjort. Krævede felter er markeret *