Tag Archives: lists.asmx

Lists.asmx, GetListItems ja kansioihin

Joidenkin tutkimus oli tekemässä joku tänään noin list.asmx web-palveluun, SharePoint osana 2010 (ja aiemmat).  Hän oli mahdollisuus saada luettelokohteet on pääkansio (mukaan lukien alikansiot nimet), mutta ei voinut saada kohteet alikansiot.  Tein joitakin haku oletusverkko, ja se on yllättävän esitettyyn kysymykseen.  Vielä, Yksinkertainen hyvä Kysymysvastauksen ei löydy., "Jos tiedän kansion, Miten saan kohteet kansioon?”  Järjestimme, I ei yritä kaikki, että kova, koska olet halusi kuva, tämä yksi pois itse jonkin aikaa Hymy.

Voit määrittää tämän, Luotu sivuston nimeltä "Blogging skenaarioita" ja "mukautetun luettelon kanssa Sub kansiot" mukautetun luettelon.  Sitten luotu kansioita nimeltä:

  • Vuoden 2005
  • Vuoden 2006
  • Vuoden 2007

Joitakin kohteita lisätään "Vuoden 2006"-kansioon.  Tämä on, miltä se näyttää:

image

Ystäväni ei ole kirjallisesti C#-koodi mutta käyttämällä pikemminkin Java, joten SOAP-kirjekuoren oli, mitä hän todella tarvitaan.  Saat että, Kirjoitti bittinen jQuery ja saada itse HTTP-keskustelu fiddler avulla.

Tässä on asiaa jQuery (Kopioidun koodi alaspäin alla Jos haluat kopioida ja liittää):

image

Ne ensimmäinen avain on sisällyttävä sekä <queryOptions> ja <QueryOptions> solmu.  Toinen avain on, että <Kansio> solmu on URL-osoite, johon asiakkaalla on käyttöoikeus.

Voi olla muita tapoja tämä, mutta tämä toimi minulle, kun käyttäen jQuery.

Tässä on yllä SOAP-kirjekuori:

<soapenv:Kirjekuori xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Laitos>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Mukautetun luettelon Sub kansioita</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef nimi =' otsikko’ />
          <FieldRef nimi ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Kansio>
http://demoserver1 ja Blogging Skenaariot, luettelot ja mukautettu luettelo Sub kansiot/vuoden 2006</Kansio>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Laitos>
</soapenv:Kirjekuori>

Esimerkkejä ja kiertää tämän keskustelun paljon johti me uskomme, että minun tarvitsee oli <QueryOptions> ja määritä kansionimi.  Minulle, Tarvitse molempia rivittää se sisällä <queryOptions> sekä määrittää täydellinen URL-osoite <Kansio> solmu.

Tässä on jQuery AJAX-asennusohjelma:

$(asiakirja).valmis(funktio() {
       var soapEnv =
           "<soapenv:Kirjekuori xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Laitos> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Mukautetun luettelon Sub kansioita</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nimi =' otsikko’ /> \
                              <FieldRef nimi ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Kansio>http://demoserver1/Blogging Skenaariot, luettelot ja mukautettu luettelo Sub kansiot/vuoden 2006</Kansio> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Laitos> \
           </soapenv:Kirjekuori>";

</loppu>

Tilaa blogiin.

Noudata minut viserrys http://www.twitter.com/pagalvin

Lists.asmx, GetList ja "arvo ei voi olla null”

Sain tänään, GetList() menetelmä lists.asmx verkkopalvelu on nimeltään huolellisesti tai on altis heittää salaperäinen "Arvo ei voi olla null-arvoinen" poikkeus (ja joka on korostunut, voit saada jopa huonompi yleinen virhesanoma aiemmat, "-Tyypin poikkeus" Microsoft.SharePoint.SoapServer.SoapServerException’ palautettiin.")  Erityisesti, Huomasin, että et voi antaa minkä tahansa etuliite GetList menetelmä.  Seuraava jQuery pätkä osoittaa:

image

Jos teet, web-palvelu vastaa "Arvo ei voi olla null-arvoinen" kuten tämä Fiddler-Jos HTTP tekstinä:

<?XML-versio = "1.0" Encoding = "utf-8"?>
  <saippua:Kirjekuori
     xmlns:saippua ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/ 2001/XMLSchema">

  <saippua:Laitos>
    <saippua:Vika>
      <faultcode>saippua:Palvelin</faultcode>
      <faultstring>
        Tyypin poikkeus "Microsoft.SharePoint.SoapServer.SoapServerException’ heitettiin.
      </faultstring>
      <yksityiskohta>
        <errorstring xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Arvo ei voi olla null.
        </errorstring>
      </yksityiskohta>
    </saippua:Vika>
  </saippua:Laitos>
</saippua:Kirjekuori>

Tietysti, luultavasti ei lisätä, "s0" etuliite oman, mutta jotkut työkalut ovat altis tekemään sen (kuten Eclipse).

Tämä on sitäkin sekava / turhauttavaa, koska muita keinoja sietää etuliitteet.  Esimerkiksi, sen GetListCollection menetelmä ei välitä, jos se on in, jopa kanssa hölynpölyä etuliitteitä kuten "xyzzy":

image

Tämä "arvo ei voi olla null-arvoinen" tuntuu melko yleinen lists.asmx, joten toivottavasti tämä auttaa jotakuta ulos tulevaisuudessa.

</loppu>

Tilaa blogiin.

Noudata minut viserrys http://www.twitter.com/pagalvin