HTTP 406 Kesalahan saat menggunakan sudut $http.get terhadap SharePoint seluruh titik akhir

Update: Marc AD ndersson menunjukkan sepotong besar info: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-api-Released/. Itu menjelaskan banyak hal :).

Itu mungkin judul posting blog terburuk pernah! Anyhoo.

Saya biasanya melakukan semua saya prototyping terhadap O365 instance. Aku punya contoh pribadi saya sehingga saya tidak perlu khawatir tentang mempengaruhi orang lain. Sebagai samping-ingat saat kami panggilan dilakukan di sekitar mesin virtual pada laptop kami dengan Lumut-SQL Server, IIS, memutuskan vs Hyper-V. VMWare? Anyhoo...

Saya telah mengembangkan sebuah aplikasi yang menggunakan sudut dalam lingkungan ini yang melakukan, di antara hal lain, ini:

$http.Get(serverUrl)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(fungsi(theResult) {

// dan seterusnya dan jadi buih

Ini bekerja baik di dua berbeda SharePoint online lingkungan. Namun, Ketika rekan saya porting ke Cloudshare instance, Ia mendapatkan HTTP 406 kesalahan (yang adalah pertama kalinya saya pernah punya satu, Jadi... yay, Saya rasa). Kami melakukan sedikit riset dan melihat bahwa header "Menerima" adalah off. SharePoint online adalah sangat senang dengan:

Menerima: aplikasi json

Tetapi contoh cloudshare (yang merupakan SP pada prem, host di virtual server) ingin klasik "odata = verbose" ditambahkan dalam juga:

Menerima: aplikasi json;oData = verbose

Untuk memperbaikinya, Kami menambahkan header seperti:

var config = {header: {
'Menerima': ' aplikasi json;oData = verbose'
}
};

$http.Get(serverUrl,config)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(fungsi(theResult) {

// dan seterusnya dan jadi buih

Yang menyingkirkan 406, Tapi itu juga mengubah format respon. Itu lebih... verbose. (Haha!) Lebih banyak perubahan yang diperlukan dan di sini adalah hasil akhir:

var config = {header: {
'Menerima': ' aplikasi json;oData = verbose'
}
};

$http.Get(serverUrl,config)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

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

// dan seterusnya dan jadi buih

Ini hanya berubah menjadi 30 menit masalah bagi kita, Jadi kita beruntung. Mudah-mudahan seseorang menemukan ini berguna.

</akhir>

2 pemikiran tentang “HTTP 406 Kesalahan saat menggunakan sudut $http.get terhadap SharePoint seluruh titik akhir

Tinggalkan balasan

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai *