2011-06-15 13 views
10

मैं CXF से list.asmx webservice को कॉल कर रहा हूं। निम्न साबुन कॉल सूची उप फ़ोल्डर से फ़ाइलों को वापस नहीं करता है। यह रिटर्न फ़ोल्डर 1, folder2 और file1.pdfशेयरपॉइंट List.getListItems वेब फ़ोल्डर उप फ़ोल्डर सामग्री को वापस करने के लिए, पुनरावर्ती

Shared Documents 
    folder1 
    file2.docx 
    file3.pdf 
    folder2 
    sub-folder1 
     file5.pdf 
    file4.pdf 
    file1.pdf 

सोप कॉल

POST /_vti_bin/lists.asmx HTTP/1.1 Accept-Encoding: gzip,deflate 

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:soap1="http://schemas.microsoft.com/sharepoint/soap/"> 
    <soap:Header/> 
    <soap:Body> 
     <soap1:GetListItems> 
     <soap1:listName>Shared Documents</soap1:listName> 
     <queryOptions> 
     <QueryOptions> 
      <IncludeMandatoryColumns>TRUE</IncludeMandatoryColumns> 
      <ViewAttributes Scope="RecursiveAll"/> 
      <DateInUtc>TRUE</DateInUtc>    
     </QueryOptions> 
     </queryOptions> 
     </soap1:GetListItems> 
    </soap:Body> 
</soap:Envelope> 

कैसे फ़ोल्डर 1 से फ़ाइलें प्राप्त करने पर कोई सुराग, folder3 और उप-फ़ोल्डर 1 परिणाम में शामिल ?. यदि सूची वेब सेवा नहीं कर सकती है, तो क्या कोई वैकल्पिक सेवा/विधि है?

अतिरिक्त जानकारी: एक और webservice, SiteData (_vti_bin/sitedata.asmx) है। इसमें एक समान विधि है (getListItems) और सभी फ़ाइलों को सिर्फ सूची नाम और कोई अतिरिक्त पैरामीटर के साथ वापस नहीं लौटाता है। मुद्दा यह है कि मैं यह नहीं समझ सकता कि पेजिंग पैरामीटर को कैसे/कहां निर्दिष्ट किया जाए, क्योंकि कोई क्वेरी नहीं है सूचियों में इनपुट तत्व जैसे तत्व वेब सेवा।

<soap1:strListName>?</soap1:strListName> 
<soap1:strQuery>?</soap1:strQuery> 
<soap1:strViewFields>?</soap1:strViewFields> 
<soap1:uRowLimit>?</soap1:uRowLimit> 

उत्तर

13

यह सूची सामग्री रिकर्सिवली प्राप्त करने के लिए संभव है, <ViewAttributes Scope="RecursiveAll"/> elment का उपयोग कर। मेरे साबुन लिफाफे में silly गलती है। क्वेरी ऑप्शन तत्व में कोई नामस्थान नहीं है। मैंने निम्नलिखित पाठ में तय किया है।

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:soap1="http://schemas.microsoft.com/sharepoint/soap/"> 
    <soap:Header/> 
    <soap:Body> 
     <soap1:GetListItems> 
     <soap1:listName>Shared Documents</soap1:listName> 
     <**soap1:**queryOptions> 
     <QueryOptions> 
      <IncludeMandatoryColumns>TRUE</IncludeMandatoryColumns> 
      <ViewAttributes Scope="RecursiveAll"/> 
      <DateInUtc>TRUE</DateInUtc>    
     </QueryOptions> 
     </**soap1:**queryOptions> 
     </soap1:GetListItems> 
    </soap:Body> 
</soap:Envelope> 

Btw, वहाँ एक महान उपकरण, U2U CAML Builder SharePoint CAML निर्माण करना है। काश मैंने पाया कि कुछ हफ्ते पहले।

+0

मुझे प्रतिक्रिया कोड मिल रहा है: 400, प्रतिक्रिया संदेश: खराब अनुरोध, जब मैं ** साबुन 1: ** लाइनें जोड़ता हूं .. क्या मुझे कुछ याद आ रही है? –

3

आपको सबफ़ोल्डर के भीतर सभी आइटम प्राप्त करने के लिए सेवा को दोबारा कॉल करना होगा। मुझे ओओटीबी करने का विकल्प नहीं है। इसके बजाय, आप इसे पूरा करने के लिए हमेशा अपनी कस्टम SharePoint वेब सेवा लिख ​​सकते हैं।

  1. http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/16a2d993-2f5e-4242-8e5a-451a78c064a3
  2. http://blogs.msdn.com/b/karthick/archive/2006/03/27/562245.aspx
+0

धन्यवाद। मुद्दा उपरोक्त साबुन लिफाफा में है। –