Tag Archives: lists.asmx

Lists.asmx, GetListItems dan folder

Saya telah melakukan beberapa kajian untuk orang hari ini di sekitar perkhidmatan web list.asmx disediakan sebagai sebahagian daripada SharePoint 2010 (dan lebih awal).  Dia mampu untuk mendapatkan barangan pada senarai folder akar (termasuk nama-nama sub-folder), tetapi tidak boleh mendapatkan item dalam sub-folder.  Saya ada melihat di sekeliling di internets dan ia adalah satu soalan yang menghairankan biasa.  Namun, Saya tidak boleh mendapatkan jawapan yang baik untuk soalan mudah, "Jika saya tahu folder, bagaimana saya boleh mendapatkan barangan di dalam folder?"  Secara jujur, Saya tidak cuba semua yang sukar kerana saya mahu untuk memikirkan satu ini keluar pada saya sendiri untuk seketika Smile.

Untuk menetapkan ini sehingga, Saya telah mencipta laman web yang bernama "Senario Blogging" dan senarai adat dinamakan "Senarai Custom dengan Sub Folder".  Saya kemudian mencipta folder bernama:

  • Tahun 2005
  • Tahun 2006
  • Tahun 2007

Saya menambah beberapa item ke folder "Tahun 2006".  Ini adalah apa yang kelihatan seperti:

image

Kawan saya tidak menulis kod C # tetapi sebaliknya menggunakan Java, supaya sampul surat SOAP adalah apa yang dia benar-benar diperlukan.  Untuk mendapatkan, Saya menulis sedikit jQuery dan kemudian digunakan pemain biola untuk mendapatkan HTTP perbualan sebenar.

Berikut adalah jQuery yang berkaitan (Saya disalin kod ke bawah jika anda mahu menyalin / menampal):

image

Mereka kunci pertama adalah untuk memasukkan kedua-dua <queryOptions> dan <QueryOptions> nod.  Kunci kedua adalah bahawa <Folder> nod adalah URL yang pelanggan mempunyai akses.

Mungkin ada cara lain untuk mendapatkan ini, tetapi ini berjalan dengan baik bagi saya apabila menggunakan jQuery.

Berikut adalah sampul surat SOAP untuk di atas:

<soapenv:Xmlns sampul surat:soapenv =’http://schemas.xmlsoap.org / sabun / sampul surat /’>                
  <soapenv:Badan>
    <GetListItems xmlns =’
http://schemas.microsoft.com / SharePoint / sabun /’>
      <listName>Senarai adat dengan Sub Folder</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef Nama = 'Tajuk’ />
          <FieldRef Nama = 'EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Folder>
http://demoserver1/Blogging Senario / senarai / Senarai Custom dengan Sub Folder / Tahun 2006</Folder>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Badan>
</soapenv:Sampul surat>

Banyak contoh-contoh dan perbincangan sekitar ini membawa saya untuk mempercayai bahawa semua saya perlukan adalah <QueryOptions> dan berikan satu nama folder.  Bagi saya, Saya perlu kedua-dua balut ia di dalam <queryOptions> serta menentukan URL yang berkelayakan sepenuhnya untuk <Folder> nod.

Berikut adalah persediaan AJAX jQuery:

$(dokumen).bersedia(fungsi() {
       var soapEnv =
           "<soapenv:Xmlns sampul surat:soapenv =’http://schemas.xmlsoap.org / sabun / sampul surat /’> \
               <soapenv:Badan> \
                    <GetListItems xmlns =’http://schemas.microsoft.com / SharePoint / sabun /’> \
                       <listName>Senarai adat dengan Sub Folder</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef Nama = 'Tajuk’ /> \
                              <FieldRef Nama = 'EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Folder>http://demoserver1/Blogging Senario / senarai / Senarai Custom dengan Sub Folder / Tahun 2006</Folder> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Badan> \
           </soapenv:Sampul surat>";

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Lists.asmx, GetList dan "Nilai tidak boleh adalah tidak sah”

Saya dapati hari ini bahawa GetList yang() kaedah dalam lists.asmx Perkhidmatan web perlu dihubungi sangat hati-hati atau tidak terdedah untuk melontarkan satu misteri "Nilai tidak boleh batal" pengecualian (dan itu menganggap anda boleh mendapatkan masa lalu mesej ralat lebih teruk generik, "Pengecualian dari jenis ' Microsoft.SharePoint.SoapServer.SoapServerException’ telah dibuang. ")  Khususnya, Saya mendapati bahawa anda tidak memberikan apa-apa jenis awalan kaedah GetList.  Cebisan jQuery yang berikut menggambarkan titik:

image

Jika anda berbuat demikian, Perkhidmatan web bertindak-balas dengan "Nilai tidak boleh batal" seperti ini pemain biola-disediakan transkrip HTTP:

<?versi XML = "1.0" pengekodan = "utf-8"?>
  <sabun:Sampul surat
     xmlns:sabun ="
http://schemas.xmlsoap.org / sabun / sampul surat /"    
     xmlns:xSi = "
http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd ="
http://www.W3.org/2001/XMLSchema">

  <sabun:Badan>
    <sabun:Kesalahan>
      <faultcode>sabun:Pelayan</faultcode>
      <faultstring>
        Pengecualian dari jenis ' Microsoft.SharePoint.SoapServer.SoapServerException’ dibuang.
      </faultstring>
      <terperinci>
        <errorstring xmlns ="
http://schemas.microsoft.com / SharePoint / sabun /">
Nilai tidak boleh batal.
        </errorstring>
      </terperinci>
    </sabun:Kesalahan>
  </sabun:Badan>
</sabun:Sampul surat>

Kursus, anda mungkin tidak akan menambah awalan "s0" itu sendiri, tetapi beberapa alat yang cenderung untuk melakukannya (seperti gerhana).

Inilah semua lebih mengelirukan / mengecewakan kerana kaedah lain bertolak awalan.  Sebagai contoh, yang GetListCollection kaedah tidak kisah jika ia adalah telah bermula, Walaupun dengan awalan karut seperti "xyzzy":

image

Ini "nilai tidak boleh batal" kelihatan agak biasa dengan begitu mudah-mudahan ini akan membantu seseorang di hadapan lists.asmx.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin