Обновление: Марк AD ndersson указал этот большой кусок информации: HTTP://blogs.Office.com/2014/08/13/JSON-Light-Support-REST-SharePoint-API-Released/. Это объясняет много :).
Это может быть когда-нибудь худшее название блога! Anyhoo.
Обычно я все мои прототипирования против экземпляра O365. У меня есть мой личный экземпляр, так что я не придется беспокоиться о затрагивающих никому. Как в сторону – Помните, когда мы называем осуществляется вокруг виртуальных машин на наших ноутбуков с Мосс – SQL Server, IIS, решение Hyper-V vs. VMWare? Anyhoo...
Я разработал приложение с помощью угловых в этой среде, что делает, среди прочего, Это:
$HTTP.Get(serverUrl)
.успех(функция(данные, статус, заголовки, config) {var getLinksResponse = данные;
getLinksResponse.value.forEach(функция(theResult) {
// и так далее и так пены
Это отлично работает в двух различных средах SharePoint онлайн. Однако, Когда мой коллега перенес его в экземпляр Cloudshare, он становится HTTP 406 Ошибка (который был в первый раз, я когда-либо получил что один, так что... Ура, Наверное). Мы сделали несколько исследований и заметил, что заголовок «Принять» был выключен. SharePoint онлайн был совершенно счастлив с:
Примите: применение/json
Но cloudshare экземпляра (который является SP на Прем, виртуальный сервер) хотели классический «odata = verbose» также добавлен в:
Примите: применение/json;OData = подробный
Чтобы это исправить, Мы добавили заголовка как таковой:
var config = {заголовки: {
«Accept»: ' приложение/json;OData = verbose'
}
};$HTTP.Get(serverUrl,config)
.успех(функция(данные, статус, заголовки, config) {var getLinksResponse = данные;
getLinksResponse.value.forEach(функция(theResult) {
// и так далее и так пены
Что избавился от 406, но он также изменил формат ответа. Это было больше... подробный. (Ха-ха!) Необходимы дополнительные изменения и вот окончательный результат:
var config = {заголовки: {
«Accept»: ' приложение/json;OData = verbose'
}
};$HTTP.Get(serverUrl,config)
.успех(функция(данные, статус, заголовки, config) {var getLinksResponse = данные;
getLinksResponse.d.Results.forEach(функция(theResult) {
// и так далее и так пены
Это только превратился в 30 минуту проблема для нас, Поэтому мы повезло. Надеюсь кто-то считает это полезным.
</конец>