Tag Archives: lists.asmx

Lists.asmx, GetListItems a složky

Dělal jsem nějaký výzkum pro někoho dnes kolem list.asmx webové služby poskytované jako součást služby SharePoint 2010 (a starší).  Podařilo se jí přimět položky seznamu v kořenové složce (včetně jména podsložky), Ale nemohl položky do podsložky.  Udělal jsem nějaké rozhlížel na internets a je překvapivě společná otázka.  Přesto, Nemohu získat Dobrá odpověď na jednoduchou otázku, "Pokud vím, do složky, Jak získat položky v této složce?”  Upřímně, Nepokoušela jsem tak tvrdě od obrázku, tento jeden z sama jsem chtěl na chvíli Usměj se.

Toto nastavení, Vytvořil jsem web s názvem "Blogování scénáře" a vlastní seznam s názvem "Vlastní seznam s dílčí složky".  Pak vytvořené složky s názvem:

  • Rok 2005
  • Rok 2006
  • Rok 2007

Přidal jsem pár položek do složky "Rok 2006".  Je to, co vypadá jako:

image

Můj přítel není psaní kódu jazyka C#, ale spíše pomocí Java, SOAP Obálka to, co opravdu potřebuje.  Na to by, Napsal trochu jQuery a pak použije houslista získat skutečné HTTP konverzaci.

Tady je relevantní jQuery (Jsem opsal kód pod Pokud chcete Kopírovat/Vložit):

image

To je první klíč obsahující jak <queryOptions> a <QueryOptions> uzel.  Druhý klíč je, že <Složka> uzel je adresa URL, na kterou má klient přístup.

Může být jiné způsoby, jak si to, Ale to pro mě pracoval, když používá jQuery.

Tady je obálka SOAP pro výše uvedené:

<soapenv:Obálka xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/ENVELOPE/’>                
  <soapenv:Tělo>
    <GetListItems xmlns =’
http://schemas.microsoft.com/SharePoint/SOAP/’>
      <Jméno_konference>Vlastní seznam s podsložky</Jméno_konference>
      <viewFields>  
        <ViewFields>
          <FieldRef jméno =' titul’ />
          <FieldRef jméno ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Složka>
http://demoserver1/blogování Scénáře/seznamy/vlastní seznam s dílčí složky za rok 2006</Složka>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Tělo>
</soapenv:Obálka>

Mnoho příkladů a diskuse kolem toho vedl mě věřit, že vše co potřebuji je <QueryOptions> a zadejte název složky.  Pro mě, Třeba jak lidi uvnitř <queryOptions> stejně jako zadejte úplnou adresu URL pro <Složka> uzel.

Tady je instalace AJAX jQuery:

$(dokument).připraven(funkce() {
       var soapEnv =
           "<soapenv:Obálka xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/ENVELOPE/’> \
               <soapenv:Tělo> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/SharePoint/SOAP/’> \
                       <Jméno_konference>Vlastní seznam s podsložky</Jméno_konference> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef jméno =' titul’ /> \
                              <FieldRef jméno ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Složka>http://demoserver1/Blogging Scénáře/seznamy/vlastní seznam s dílčí složky za rok 2006</Složka> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Tělo> \
           </soapenv:Obálka>";

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Lists.asmx, GetList a "hodnota nemůže být null”

Dnes jsem zjistil, že GetList() Metoda lists.asmx Webová služba musí být volán velmi pečlivě nebo je náchylný na tajemnou "Hodnota nemůže být null" výjimka (a to za předpokladu, že se že můžete dostat přes ještě horší obecnou chybovou zprávu, "Výjimka typu ' Microsoft.SharePoint.SoapServer.SoapServerException’ byla vyvolána.")  Konkrétně, Zjistil jsem, že nemůže poskytnout jakýkoliv druh předpony v metodě GetList.  Následující úryvek jQuery je znázorněna:

image

Pokud tak učiníte, Webová služba reaguje s "Hodnota nemůže být null" jak na to houslista-Pokud protokol HTTP:

<?XML verze = "1.0" kódování = "utf-8"?>
  <mýdlo:Obálka
     xmlns.:mýdlo ="
http://schemas.xmlsoap.org/SOAP/ENVELOPE/"    
     xmlns.:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns.:XSD ="
http://www.w3.org/2001/XMLSchema">

  <mýdlo:Tělo>
    <mýdlo:Chyba>
      <faultcode>mýdlo:Server</faultcode>
      <řetězcem faultString>
        Výjimka typu ' Microsoft.SharePoint.SoapServer.SoapServerException’ byla vyvolána.
      </řetězcem faultString>
      <Podrobnosti>
        <errorString xmlns ="
http://schemas.microsoft.com/SharePoint/SOAP/">
Hodnota nemůže být null.
        </errorString>
      </Podrobnosti>
    </mýdlo:Chyba>
  </mýdlo:Tělo>
</mýdlo:Obálka>

Samozřejmě, pravděpodobně by přidáte tento prefix "odečtením" na vlastní, Ale některé nástroje jsou náchylné k tomu (jako Eclipse).

Je to o to víc matoucí / frustrující, protože jiné metody tolerovat předpony.  Například, v GetListCollection Metoda nebude vadit, kdyby se byla předponou, i s předponami nesmysly jako "xyzzy":

image

Toto "hodnota nemůže být null" se zdá docela běžné s lists.asmx tak snad to pomůže někomu se v budoucnu.

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin