Tag Archives: lists.asmx

Lists.asmx, GetListItems और फ़ोल्डर्स

मैं SharePoint के भाग के रूप में प्रदान की आज list.asmx वेब सेवा के आसपास किसी के लिए कुछ शोध कर रहा था 2010 (और इससे पहले).  वह सूची आइटम को रूट फ़ोल्डर में प्राप्त करने में सक्षम था (उप फ़ोल्डर्स के नाम सहित), लेकिन उप फ़ोल्डर्स में आइटम्स नहीं मिल सका।  मैं कुछ internets पर चारों ओर देख रहा था और यह एक आश्चर्य की बात आम सवाल है।  अभी तक, मैं सरल प्रश्न के लिए एक अच्छा जवाब नहीं मिल सका, अगर मैं फ़ोल्डर पता", मैं उस फ़ोल्डर में आइटम कैसे मिलता है?”  ईमानदार होना करने के लिए, मैं थोड़ी देर के लिए मेरी अपनी पर इस एक बाहर आंकड़ा करने के लिए चाहता है के बाद से मैं कोशिश कि सभी कठिन नहीं था मुस्कुराओ.

इस सेट अप करने के लिए, मैं एक साइट "ब्लॉगिंग परिदृश्यों" नाम दिया और "उप फ़ोल्डर्स के साथ कस्टम सूची" नामक एक कस्टम सूची बनाई।  मैं तो नाम फ़ोल्डर बनाया:

  • वर्ष 2005
  • वर्ष 2006
  • वर्ष 2007

मैं कुछ आइटम्स फ़ोल्डर में जोड़े "वर्ष 2006 '।  यह है क्या यह की तरह लग रहा है:

image

मेरे दोस्त सी # कोड लिख नहीं है, लेकिन बल्कि जावा का प्रयोग, तो क्या वह वास्तव में जरूरत SOAP एनवलप था।  कि प्राप्त करने के लिए, मैं jQuery का एक सा लिखा था और फिर सारंगी बजानेवाला वास्तविक HTTP बातचीत करने के लिए प्रयुक्त.

यहाँ प्रासंगिक jQuery है (यदि आप कॉपी/पेस्ट करना चाहते हैं मैं कोड नीचे नीचे नकल):

image

वे पहली कुंजी है दोनों को शामिल करने के लिए एक <queryOptions> और <QueryOptions> नोड।  दूसरा प्रमुख है कि <फ़ोल्डर> नोड एक यूआरएल जो करने के लिए क्लाइंट तक पहुँच गया है.

इस प्राप्त करने के लिए अन्य तरीके हो सकते हैं, लेकिन यह मेरे लिए अच्छी तरह से काम किया है jQuery का उपयोग करते समय.

यहाँ SOAP एनवलप इसके बाद के संस्करण के लिए है:

<soapenv:लिफ़ाफ़ा xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:शरीर>
    <GetListItems xmlns =’
http://schemas.microsoft.com/sharepoint/soap/’>
      <listName>उप फ़ोल्डर्स के साथ कस्टम सूची</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef नाम =' शीर्षक’ />
          <FieldRef नाम ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <फ़ोल्डर>
http://demoserver1/ब्लॉगिंग उप फ़ोल्डर्स/वर्ष 2006 के साथ परिदृश्यों/सूची/कस्टम सूची</फ़ोल्डर>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:शरीर>
</soapenv:लिफ़ाफ़ा>

उदाहरण हैं और इस के आसपास चर्चा का एक बहुत कुछ के नेतृत्व में मुझे विश्वास है कि मैं सभी की जरूरत थी <QueryOptions> और एक फ़ोल्डर नाम निर्दिष्ट करें।  मेरे लिए, मैं दोनों के लिए अंदर इसे लपेटो की जरूरत है <queryOptions> रूप में अच्छी तरह के रूप में एक पूर्ण क्वालीफ़ाइड URL के लिए निर्दिष्ट करें <फ़ोल्डर> नोड.

यहाँ jQuery AJAX सेटअप है:

$(दस्तावेज़).तैयार(समारोह() {
       var soapEnv =
           "<soapenv:लिफ़ाफ़ा xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:शरीर> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/sharepoint/soap/’> \
                       <listName>उप फ़ोल्डर्स के साथ कस्टम सूची</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef नाम =' शीर्षक’ /> \
                              <FieldRef नाम ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <फ़ोल्डर>http://demoserver1/Blogging उप फ़ोल्डर्स/वर्ष 2006 के साथ परिदृश्यों/सूची/कस्टम सूची</फ़ोल्डर> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:शरीर> \
           </soapenv:लिफ़ाफ़ा>";

</अंत>

मेरे ब्लॉग के लिए सदस्यता लें.

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin

Lists.asmx, GetList और 'मान रिक्त होना नहीं कर सकते”

मुझे आज पता चला कि GetList() विधि में lists.asmx वेब सेवा बहुत ही सावधानी से कहा जा करने के लिए है या यह एक रहस्यमय "मान रिक्त हो सकता" अपवाद फेंक करने के लिए प्रवण है (और कि आप अतीत भी बदतर जेनेरिक त्रुटि संदेश प्राप्त कर सकते हैं संभालने है, "प्रकार की अपवाद ' Microsoft.SharePoint.SoapServer.SoapServerException’ फेंक दिया गया था.")  विशेष रूप से, मैंने पाया है कि आप GetList पद्धति पर उपसर्ग की किसी भी तरह प्रदान नहीं कर सकते।  निम्नलिखित jQuery स्निपेट दिखाता है बात:

image

यदि आप कि क्या, वेब सेवा का जवाब है "मान के अनुसार यह बातिल हो नहीं कर सकता के साथ" सारंगी बजानेवाला-HTTP प्रतिलेख प्रदान की:

<?xml संस्करण "1.0 =" एन्कोडिंग = "utf-8"?>
  <साबुन:लिफ़ाफ़ा
     xmlns:साबुन ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/ 2001/xml स्कीमा-उदाहरण
     xmlns:xsd ="
http://www.w3.org/ 2001/xml स्कीमा">

  <साबुन:शरीर>
    <साबुन:गलती>
      <faultcode>साबुन:सर्वर</faultcode>
      <faultstring>
        अपवाद प्रकार का ' Microsoft.SharePoint.SoapServer.SoapServerException’ फेंका था.
      </faultstring>
      <विस्तार>
        <errorstring xmlns ="
http://schemas.microsoft.com/sharepoint/soap/">
मान रिक्त नहीं हो सकता.
        </errorstring>
      </विस्तार>
    </साबुन:गलती>
  </साबुन:शरीर>
</साबुन:लिफ़ाफ़ा>

बेशक, तुम्हें शायद कि "s0" उपसर्ग अपने दम पर जोड़ नहीं होता, लेकिन कुछ उपकरण यह करने के लिए प्रवण हैं (ग्रहण की तरह).

यह सब अधिक भ्रामक है / निराशा होती है क्योंकि अन्य विधियों को उपसर्ग सहन।  उदाहरण के लिए, इस GetListCollection विधि यदि यह prefixed किया गया है मन नहीं करता, "xyzzy" की तरह भी बकवास उपसर्गों के साथ:

image

यह "मूल्य नहीं हो सकता नल है" तो उम्मीद है कि यह मदद मिलेगी किसी को बाहर भविष्य में lists.asmx के साथ काफी आम लगता है.

</अंत>

मेरे ब्लॉग के लिए सदस्यता लें.

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin