Atualização: Marc AD ndersson apontou este grande pedaço de informação: http://Blogs.Office.com/2014/08/13/JSON-Light-support-REST-SharePoint-API-Released/. Isso explica muita coisa :).
Isso pode ser o pior título de um post de blog já! Seja como for.
Normalmente faço tudo do meu prototipagem contra uma instância O365. Eu tenho minha instância pessoal para que não tenho que me preocupar que afetam qualquer outro. Como um aparte – lembra quando nós chamamos carreg em torno de máquinas virtuais em nossos laptops com musgo – SQL Server, IIS, decidindo vs Hyper-V. VMWare? Seja como for...
Eu tinha desenvolvido um aplicativo usando Angular neste ambiente que faz, entre outras coisas, Isso:
$http.Get(serverUrl)
.sucesso(função(dados, estatuto, cabeçalhos, config) {var getLinksResponse = dados;
getLinksResponse.value.forEach(função(theResult) {
// e assim por diante e então espuma
Isto estava funcionando muito bem em dois ambientes diferentes do SharePoint online. No entanto, Quando o meu colega é portado para uma instância de Cloudshare, Ele estava ficando um HTTP 406 erro (Qual foi a primeira vez que tive aquele, Então... yay, Eu suponho). Nós fizemos um pouco de pesquisa e notei que o cabeçalho de "Aceitar" estava fora. SharePoint online foi perfeitamente feliz com:
Aceitar: application/json
Mas a instância cloudshare (Qual é o SP na prem, hospedado em um servidor virtual) queria o clássico "odata = verbose" adicionado em também:
Aceitar: application/json;OData = verbose
Para corrigir isso, adicionamos o cabeçalho como tal:
config var = {cabeçalhos: {
'Aceitar': ' application/json;OData = verbose'
}
};$http.Get(serverUrl,config)
.sucesso(função(dados, estatuto, cabeçalhos, config) {var getLinksResponse = dados;
getLinksResponse.value.forEach(função(theResult) {
// e assim por diante e então espuma
Que livrou o 406, Mas isso também mudou o formato da resposta. Era mais... detalhado. (haha!) Mais mudanças foram necessárias e aqui está o resultado final:
config var = {cabeçalhos: {
'Aceitar': ' application/json;OData = verbose'
}
};$http.Get(serverUrl,config)
.sucesso(função(dados, estatuto, cabeçalhos, config) {var getLinksResponse = dados;
getLinksResponse.d.Results.forEach(função(theResult) {
// e assim por diante e então espuma
Este só se transformou em um 30 minuto problema para nós, Então nós tivemos sorte. Espero que alguém acha isso útil.
</fim>