Archifau Tagiau: lists.asmx

Lists.asmx, GetListItems a Folders

Roeddwn yn gwneud rhywfaint o waith ymchwil i rywun heddiw o amgylch y gwasanaeth we list.asmx a ddarperir fel rhan o SharePoint 2010 (ac yn gynharach).  Roedd hi'n gallu cael yr eitemau rhestr ar y ffolder wraidd (gan gynnwys enwau is-ffolderi), ond ni allai gael eitemau yn is-ffolderi.  I ddim yn rhai edrych o gwmpas ar y internets ac mae'n gwestiwn rhyfeddol o gyffredin.  Eto, Nid oeddwn yn gallu cael ateb da i'r cwestiwn syml, "Os wyf yn gwybod y ffolder, sut ydw i'n cael y eitemau yn y ffolder?"  I fod yn onest, Doeddwn i ddim yn ceisio bob un sy'n caled ers i mi wedi bod eisiau i ffigur hwn allan ar fy mhen fy hun am gyfnod Smile.

I osod hyn i fyny, Yr wyf yn creu safle o'r enw "Senarios Blogio" a rhestr arfer o'r enw "Rhestr Custom gyda Is Folders".  Yna greu ffolderi a enwir:

  • Blwyddyn 2005
  • Blwyddyn 2006
  • Blwyddyn 2007

I ychwanegu ychydig o eitemau at 'r folder "Blwyddyn 2006".  Dyma sut mae'n edrych:

image

Nid yw fy ffrind yn ysgrifennu C # cod, ond yn hytrach gan ddefnyddio Java, felly yr amlen SOAP oedd beth oedd gwir angen.  Er mwyn cael y, Ysgrifennais ychydig o jQuery ac a ddefnyddir wedyn ffidlwr i gael y sgwrs HTTP gwirioneddol.

Dyma y jQuery perthnasol (I gopïo y cod i lawr isod os ydych am gopi / past):

image

Maent yn allweddol cyntaf yw cynnwys ill dau <queryOptions> a <QueryOptions> nod.  Yr ail allweddol yw bod y <Folder> nod yw URL y mae gan y cleient fynediad.

Gall fod ffyrdd eraill o gael y, ond mae hyn yn gweithio'n dda i mi wrth ddefnyddio jQuery.

Dyma'r amlen SOAP ar gyfer yr uchod:

<soapenv:Xmlns Amlen:soapenv =’http://schemas.xmlsoap.org / sebon / amlen /’>                
  <soapenv:Corff>
    <Xmlns GetListItems =’
http://schemas.microsoft.com / sharepoint / sebon /’>
      <Collddail>Rhestr Custom gyda Is-Folders</Collddail>
      <viewFields>  
        <ViewFields>
          <FieldRef Enw = 'Teitl’ />
          <FieldRef Enw = 'EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Folder>
http://demoserver1/Blogging Senarios / rhestrau / Rhestr Custom gyda Is Folders / Flwyddyn 2006</Folder>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corff>
</soapenv:Amlen>

Mae llawer o enghreifftiau a thrafodaeth o gwmpas hyn fy arwain i gredu bod yr holl ei angen arnaf yn <QueryOptions> ac yn nodi enw ffolder.  I mi, Mae angen i'r ddau lapio y tu mewn i <queryOptions> yn ogystal â nodi URL hollol gymwys ar gyfer y <Folder> nod.

Dyma y setup AJAX jQuery:

$(dogfen).barod(swyddogaeth() {
       Roedd soapEnv =
           "<soapenv:Xmlns Amlen:soapenv =’http://schemas.xmlsoap.org / sebon / amlen /’> \
               <soapenv:Corff> \
                    <Xmlns GetListItems =’http://schemas.microsoft.com / sharepoint / sebon /’> \
                       <Collddail>Rhestr Custom gyda Is-Folders</Collddail> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef Enw = 'Teitl’ /> \
                              <FieldRef Enw = 'EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Folder>http://demoserver1/Blogging Senarios / rhestrau / Rhestr Custom gyda Is Folders / Flwyddyn 2006</Folder> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corff> \
           </soapenv:Amlen>";

</diwedd>

Tanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Lists.asmx, Ni all GetList a "Gwerth yn null”

Wnes i ddarganfod heddiw fod y GetList() dull yn lists.asmx gwasanaeth ar y we wedi ei alw yn ofalus iawn, neu ei fod yn dueddol i daflu dirgel "Gwerth Ni all fod yn null" eithriad (ac sy'n cael ei dybio gallwch gael heibio i'r neges gwall hyd yn oed yn waeth generig, "Eithriad o'r math ' Microsoft.SharePoint.SoapServer.SoapServerException’ ei daflu. ")  Yn benodol, Rwy'n dod o hyd na allwch ddarparu unrhyw fath o ragddodiad ar y dull GetList.  Mae'r snippet jQuery canlynol yn dangos y pwynt:

image

Os byddwch yn gwneud hynny, y gwasanaeth ar y we yn ymateb gyda "Ni all Gwerth yn null" yn unol hon ffidlwr-darparu trawsgrifiad HTTP:

<?Fersiwn XML = "1.0" amgodio = "utf-8"?>
  <sebon:Amlen
     xmlns:sebon ="
http://schemas.xmlsoap.org / sebon / amlen /"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd ="
http://www.w3.org/2001/XMLSchema">

  <sebon:Corff>
    <sebon:Diffygion>
      <faultcode>sebon:Gweinydd</faultcode>
      <faultstring>
        Eithriad o'r math ' Microsoft.SharePoint.SoapServer.SoapServerException’ ei daflu.
      </faultstring>
      <manylion>
        <xmlns llinyn gwall ="
http://schemas.microsoft.com / sharepoint / sebon /">
Ni all Gwerth yn null.
        </errorstring>
      </manylion>
    </sebon:Diffygion>
  </sebon:Corff>
</sebon:Amlen>

Wrth gwrs, mae'n debyg na fyddai ychwanegu bod "S0" rhagddodiad ar eich pen eich hun, ond mae rhai offer yn tueddu i wneud hynny (fel Eclipse).

Mae hyn yn y mwyaf i gyd ddryslyd / rhwystredig oherwydd bod dulliau eraill goddef rhagddodiaid.  Er enghraifft, y GetListCollection Nid oes ots os yw'n dull wedi bod yn rhagddodi, hyd yn oed gyda rhagddodiaid nonsens fel "xyzzy":

image

Mae hyn yn "Ni all fod yn werth null" yn ymddangos yn eithaf cyffredin gyda lists.asmx felly gobeithio y bydd hyn yn helpu rhywun allan yn y dyfodol.

</diwedd>

Tanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin