HTTP 406 Fel när du använder kantiga $http.get mot SharePoint resten slutpunkter

Uppdatering: Marc AD ndersson påpekade detta stor bit av information: http://blogs.Office.com/2014/08/13/JSON-Light-support-rest-SharePoint-API-Released/. Som förklarar en hel del :).

Det kan vara den värsta titeln på ett blogginlägg någonsin! Anyhoo.

Jag gör alla min prototyping mot en O365-instans. Jag har min personliga instans så att jag slipper vara orolig som påverkar någon annan. Som en parentes – kom ihåg när vi kallar burna runt virtuella maskiner på våra bärbara datorer med MOSS-SQL Server, IIS, beslutande Hyper-V vs. VMWare? Hur som helst...

Jag hade utvecklat en app som använder vinkelformig i denna miljö som gör, bland annat, Detta:

$http.get(serverUrl)
.framgång(funktionen(data, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funktionen(Resultatet) {

// och så vidare och så skum

Detta fungerade bara bra i två olika SharePoint online miljöer. Men, När min kollega portat det till en Cloudshare-instans, Han var att få en HTTP 406 fel (vilket var första gången jag någonsin fått det, så... yay, Tror jag). Vi gjorde lite forskning och märkte att "Acceptera" huvudet var off. SharePoint online var helt nöjd med:

Acceptera: Application/json

Utom den cloudshare instansen (som är SP på prem, värd i en virtual server) ville ha klassiskt "odata = verbose" tillagda i:

Acceptera: Application/json;OData = verbose

Att fixa det, Vi lade till i huvudet som sådan:

var config = {headers: {
"Acceptera": ' application/json;OData = verbose "
}
};

$http.get(serverUrl,config)
.framgång(funktionen(data, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funktionen(Resultatet) {

// och så vidare och så skum

Som fick bort den 406, men det ändras även formatet för svaret. Det var mer... verbose. (haha!) Fler ändringar var nödvändiga och här är slutresultatet:

var config = {headers: {
"Acceptera": ' application/json;OData = verbose "
}
};

$http.get(serverUrl,config)
.framgång(funktionen(data, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.d.results.forEach(funktionen(Resultatet) {

// och så vidare och så skum

Detta bara förvandlats till en 30 minut problem för oss, så vi lucked ut. Förhoppningsvis hittar någon detta användbara.

</slutet>

2 tankar på "HTTP 406 Fel när du använder kantiga $http.get mot SharePoint resten slutpunkter

Lämna svar

Din e-postadress kommer inte att publiceras. behövliga fält är markerade *