Arsip Kategori: Layanan Web SharePoint

Cara menentukan orang sebagai lingkup Cari / Sumber konten menggunakan SharePoint 2013 REST API

Aku punya alasan untuk bekerja dengan SharePoint 2013 Search API melalui sisanya untuk pertama kalinya. Aku ingin Cari orang, bukan dokumen. Kunci belajar di sini adalah bahwa Anda menentukan sumber konten melalui GUID yang (atau setidaknya dalam kasus ini). Berikut jQuery potongan menunjukkan bagaimana:

    loadExpertsAsync: fungsi() {

        jQuery.support.cors = benar;

        $.Ajax({
            URL: ini.CreateFullApiUrl() +
                "?querytext = 'portal'&sourceid = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Keterampilan,AboutMe,Kepentingan,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            metode: "MENDAPATKAN",
            header: { "Menerima": "aplikasi json; oData = verbose" },
            cache: palsu,
            sukses: fungsi (hasil) {

Dalam kasus saya, Saya menjalankan API terhadap SharePoint online. Untuk mendapatkan GUID, Aku mengikuti langkah-langkah:

  1. Mengakses SharePoint admin center
  2. Pilih "Cari" dari navigasi di sebelah kiri
  3. Pilih "Atur hasil sumber"
  4. Pilih "Masyarakat setempat hasil"
  5. Melihat URL.

URL saya melihat sesuatu seperti:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

Sourceid parameter adalah apa yang bekerja untuk saya.

(Saya memahami bahwa sourceid benar-benar mungkin semacam hal yang permanen dengan SP, but I’ll always check anyway 🙂 ).

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Lists.ASMX, GetListItems dan folder

Aku sedang melakukan penelitian untuk seseorang hari ini sekitar list.asmx web layanan yang disediakan sebagai bagian dari SharePoint 2010 (dan sebelumnya).  Ia mampu untuk mendapatkan daftar item di folder akar (termasuk nama subfolder), tapi tidak bisa mendapatkan barang-barang dalam subfolder.  Aku melakukan beberapa memandang berkeliling di the internets dan pertanyaan yang mengejutkan umum.  Namun, Saya tidak bisa mendapatkan jawaban yang bagus untuk pertanyaan sederhana, "jika saya tahu folder, Bagaimana saya mendapatkan item di folder?”  Jujur, Aku tidak mencoba terlalu keras karena aku ingin angka satu ini keluar pada saya sendiri untuk sementara waktu Tersenyum.

Untuk mengatur hal ini, Saya membuat sebuah situs bernama "Blogging skenario" dan daftar kustom bernama "Daftar dengan Sub folder".  Saya kemudian membuat folder bernama:

  • Tahun 2005
  • Tahun 2006
  • Tahun 2007

Saya menambahkan beberapa item ke folder "Tahun 2006".  Ini adalah apa yang tampak seperti:

image

Teman saya tidak menulis C# kode tapi agak menggunakan Java, Jadi SOAP amplop adalah apa yang dia benar-benar diperlukan.  Untuk mendapatkan itu, Saya menulis sedikit jQuery dan kemudian digunakan fiddler untuk mendapatkan percakapan HTTP sebenarnya.

Berikut adalah relevan jQuery (Aku menyalin kode turun di bawah ini jika Anda ingin copy/paste):

image

Mereka kunci pertama adalah untuk memasukkan kedua <queryOptions> dan <QueryOptions> node.  Tombol kedua adalah bahwa <Folder> simpul adalah URL yang klien memiliki akses.

Mungkin ada cara lain untuk mendapatkan ini, Tapi ini bekerja dengan baik bagi saya ketika menggunakan jQuery.

Berikut adalah SOAP amplop untuk di atas:

<soapenv:Amplop xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Tubuh>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Daftar kustom dengan Sub folder</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef nama =' judul’ />
          <FieldRef nama ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Folder>
http://demoserver1/blog Skenario/daftar/Custom daftar dengan Sub folder/tahun 2006</Folder>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Tubuh>
</soapenv:Amplop>

Banyak contoh dan diskusi sekitar ini membawaku untuk percaya bahwa semua saya butuhkan adalah <QueryOptions> dan tentukan nama folder.  Bagi saya, Saya perlu untuk kedua bungkus dalam <queryOptions> serta menentukan URL yang memenuhi syarat untuk <Folder> node.

Here's the jQuery AJAX setup:

$(dokumen).siap(fungsi() {
       var soapEnv =
           "<soapenv:Amplop xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Tubuh> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Daftar kustom dengan Sub folder</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nama =' judul’ /> \
                              <FieldRef nama ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Folder>http://demoserver1/Blogging Skenario/daftar/Custom daftar dengan Sub folder/tahun 2006</Folder> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Tubuh> \
           </soapenv:Amplop>";

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Lists.ASMX, GetList dan "nilai tidak boleh null”

Hari ini saya menemukan bahwa GetList() metode dalam Lists.ASMX Layanan web telah dipanggil sangat hati-hati atau rentan untuk melemparkan misterius pengecualian "Nilai tidak boleh null" (dan itu dengan anggapan Anda dapat melewati lebih buruk pesan kesalahan umum, "Pengecualian jenis ' Microsoft.SharePoint.SoapServer.SoapServerException’ dilemparkan.")  Khusus, Saya menemukan bahwa Anda tidak dapat menyediakan jenis awalan pada metode GetList.  JQuery potongan berikut menggambarkan titik:

image

Jika Anda melakukannya, Layanan web menanggapi dengan "Nilai tidak boleh null" seperti ini Fiddler-disediakan HTTP transkrip:

<?Versi XML = "1.0" pengkodean = "utf-8"?>
  <sabun:Amplop
     xmlns:sabun ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:XSI = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:xsd ="
http://www.w3.org/ 2001/XMLSchema">

  <sabun:Tubuh>
    <sabun:Kesalahan>
      <faultcode>sabun:Server</faultcode>
      <faultstring>
        Pengecualian jenis ' Microsoft.SharePoint.SoapServer.SoapServerException’ terlempar.
      </faultstring>
      <detail>
        <errorstring xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Nilai tidak boleh null.
        </errorstring>
      </detail>
    </sabun:Kesalahan>
  </sabun:Tubuh>
</sabun:Amplop>

Tentu saja, Anda mungkin tidak akan menambahkan awalan "s0" itu sendiri, tetapi beberapa alat cenderung melakukannya (seperti Eclipse).

Ini semua lebih membingungkan / frustrasi karena metode lain mentolerir awalan.  Misalnya, The GetListCollection metode tidak keberatan jika itu adalah bahasa, bahkan dengan awalan omong kosong seperti "xyzzy":

image

Ini "nilai tidak boleh null" tampaknya cukup umum dengan lists.asmx jadi mudah-mudahan ini akan membantu seseorang di masa depan.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin