ಟ್ಯಾಗ್ ಆರ್ಕೈವ್ಸ್: lists.asmx

Lists.asmx, GetListItems ಮತ್ತು ಫೋಲ್ಡರ್ಗಳು

ನಾನು ಶೇರ್ಪಾಯಿಂಟ್ ಭಾಗವಾಗಿ ಒದಗಿಸಿದ list.asmx ವೆಬ್ ಸೇವೆ ಸುತ್ತ ಇಂದು ಯಾರಾದರೂ ಕೆಲವು ಸಂಶೋಧನೆ ಮಾಡುತ್ತಿದ್ದ 2010 (ಮತ್ತು ಹಿಂದಿನ).  ಅವರು ಮೂಲ ಫೋಲ್ಡರ್ ನಲ್ಲಿ ಪಟ್ಟಿ ಐಟಂಗಳನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಯಿತು (ಉಪ ಫೋಲ್ಡರ್ಗಳನ್ನು ಹೆಸರುಗಳು ಸೇರಿದಂತೆ), ಆದರೆ ಉಪ ಫೋಲ್ಡರ್ಗಳನ್ನು ಐಟಂಗಳನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.  ನಾನು ಕೆಲವು internets ಮೇಲೆ ಸುತ್ತಲೂ ನೋಡುತ್ತಿದ್ದವು ಮತ್ತು ಅದನ್ನು ಒಂದು ಆಶ್ಚರ್ಯಕರ ಸಾಮಾನ್ಯ ಪ್ರಶ್ನೆ ಇಲ್ಲಿದೆ.  ಇನ್ನೂ, ನಾನು ಸರಳ ಪ್ರಶ್ನೆಗೆ ಉತ್ತಮ ಉತ್ತರವನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ, "ನಾನು ಫೋಲ್ಡರ್ ತಿಳಿದಿದ್ದರೆ, ಹೇಗೆ ನಾನು ಫೋಲ್ಡರ್ನಲ್ಲಿ ಐಟಂಗಳನ್ನು ಪಡೆಯಲು ಇಲ್ಲ?"  ಪ್ರಾಮಾಣಿಕವಾಗಿ, ನಾನು ಆ ನನ್ನ ಈ ಒಂದು ಲೆಕ್ಕಾಚಾರ ಬಯಸಿದರು ಬಂದಿದೆ ಏಕೆಂದರೆ ನಾನು ಆ ಹಾರ್ಡ್ ಪ್ರಯತ್ನಿಸಿ ಇಲ್ಲ ಸ್ಮೈಲ್.

ಈ ಹೊಂದಿಸಲು, ನಾನು "ಬ್ಲಾಗಿಂಗ್ ಸಂದರ್ಭಗಳ" ಮತ್ತು "ಉಪ ಫೋಲ್ಡರ್ಗಳು ಕಸ್ಟಮ್ ಪಟ್ಟಿ" ಹೆಸರಿನ ಕಸ್ಟಮ್ ಪಟ್ಟಿಯಲ್ಲಿ ಹೆಸರಿನ ಸೈಟ್ ದಾಖಲಿಸಿದವರು.  ನಾನು ಎಂಬ ಫೋಲ್ಡರ್ಗಳನ್ನು ದಾಖಲಿಸಿದವರು:

  • ವರ್ಷ 2005
  • ವರ್ಷ 2006
  • ವರ್ಷ 2007

ನಾನು ಫೋಲ್ಡರ್ "ವರ್ಷದ 2006" ಕೆಲವು ಐಟಂಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ.  ಇದು ತೋರುತ್ತಿದೆ ಏನು:

image

ನನ್ನ ಸ್ನೇಹಿತ C # ಕೋಡ್ ಬರೆಯುವ ಬದಲಿಗೆ ಜಾವಾ ಬಳಸದೇ, ಆದ್ದರಿಂದ SOAP ಹೊದಿಕೆ ಅವರು ನಿಜವಾಗಿಯೂ ಅಗತ್ಯವಿದೆ ಯಾವುದು.  ಎಂದು ಪಡೆಯಲು, ನಾನು jQuery ಒಂದು ಬಿಟ್ ಬರೆದು ನಂತರ ನಿಜವಾದ HTTP ಸಂವಾದವನ್ನು ಪಡೆಯಲು ಪಿಟೀಲುವಾದಕ ಬಳಸಲಾಗುತ್ತದೆ.

ಇಲ್ಲಿ ಸೂಕ್ತ jQuery ಇಲ್ಲಿದೆ (ನೀವು ಅಂಟಿಸಿ / ನಕಲಿಸಲು ಬಯಸುವ ವೇಳೆ ನಾನು ಕೆಳಗೆ ಕೋಡ್ ಕೆಳಗೆ ನಕಲು):

image

ಅವರು ಮೊದಲ ಪ್ರಮುಖ ಒಂದು ಎರಡೂ ಸೇರಿಸುವುದು <queryOptions> ಮತ್ತು <QueryOptions> ನೋಡ್.  ಎರಡನೇ ಪ್ರಮುಖ ಎಂದು <ಫೋಲ್ಡರ್> ನೋಡ್ ಇದು ಕ್ಲೈಂಟ್ ನಿಲುಕುವ ಒಂದು URL ಅನ್ನು ಹೊಂದಿದೆ.

ಈ ಪಡೆಯಲು ಇತರ ಬಗೆಗಳು ಇರಬಹುದು, jQuery ಬಳಸುವಾಗ ಆದರೆ ಈ ನನಗೆ ಚೆನ್ನಾಗಿ ಕೆಲಸ.

ಇಲ್ಲಿ ಮೇಲೆ ಫಾರ್ SOAP ಹೊದಿಕೆ ಆಗಿದೆ:

<soapenv:ಎನ್ವೆಲಪ್ xmlns:soapenv =’HTTP://schemas.xmlsoap.org / ಸಾಬೂನು / ಹೊದಿಕೆ /’>                
  <soapenv:ದೇಹ>
    <GetListItems xmlns =’
HTTP://schemas.microsoft.com / ಶೇರ್ಪಾಯಿಂಟ್ / ಸಾಬೂನು /’>
      <ಪತನಶೀಲ>ಉಪ ಫೋಲ್ಡರ್ಗಳು ಕಸ್ಟಮ್ ಪಟ್ಟಿ</ಪತನಶೀಲ>
      <viewFields>  
        <ViewFields>
          <FieldRef ಹೆಸರು = 'ಶೀರ್ಷಿಕೆ’ />
          <FieldRef ಹೆಸರು = 'EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <ಫೋಲ್ಡರ್>
HTTP://demoserver1/Blogging ಸಂದರ್ಭಗಳ / ಪಟ್ಟಿಗಳನ್ನು / ಉಪ ಫೋಲ್ಡರ್ಗಳು / ವರ್ಷದ 2006 ಕಸ್ಟಮ್ ಪಟ್ಟಿ</ಫೋಲ್ಡರ್>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:ದೇಹ>
</soapenv:ಹೊದಿಕೆ>

ಇದರೊಂದಿಗೆ ಉದಾಹರಣೆಗಳು ಮತ್ತು ಚರ್ಚೆಯ ಬಹಳಷ್ಟು ನಾನು ಬೇಕಾಗಿರುವುದೆಲ್ಲಾ ಎಂದು ನಂಬಲು ಕಾರಣವಾಯಿತು <QueryOptions> ಮತ್ತು ಫೋಲ್ಡರ್ ಹೆಸರು ಸೂಚಿಸಿ.  ನನಗೆ, ನಾನು ಎರಡೂ ಸುತ್ತು ಒಳಗೆ ಅಗತ್ಯವಿದೆ <queryOptions> ಜೊತೆಗೆ ಒಂದು ಸಂಪೂರ್ಣ ಅರ್ಹವಾದ URL ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು <ಫೋಲ್ಡರ್> ಗೆಣ್ಣು.

ಇಲ್ಲಿ jQuery AJAX ಸೆಟಪ್ ಇಲ್ಲಿದೆ:

$(ದಾಖಲೆ).ಸಿದ್ಧ(ಕ್ರಿಯೆ() {
       soapEnv = ಆಗಿತ್ತು
           "<soapenv:ಎನ್ವೆಲಪ್ xmlns:soapenv =’HTTP://schemas.xmlsoap.org / ಸಾಬೂನು / ಹೊದಿಕೆ /’> \
               <soapenv:ದೇಹ> \
                    <GetListItems xmlns =’HTTP://schemas.microsoft.com / ಶೇರ್ಪಾಯಿಂಟ್ / ಸಾಬೂನು /’> \
                       <ಪತನಶೀಲ>ಉಪ ಫೋಲ್ಡರ್ಗಳು ಕಸ್ಟಮ್ ಪಟ್ಟಿ</ಪತನಶೀಲ> \
                       <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 ವೆಬ್ ಸೇವೆ ಜಾಗರೂಕತೆಯಿಂದ ಎಂದು ಹೊಂದಿದೆ ಅಥವಾ ವಿನಾಯಿತಿ "ಶೂನ್ಯ ಸಾಧ್ಯವಿಲ್ಲ ಮೌಲ್ಯ" ಇದು ನಿಗೂಢ ಎಸೆಯಲು ಪೀಡಿತ ಇಲ್ಲಿದೆ (ಮತ್ತು ಊಹಿಸಿಕೊಂಡು ವಿಶೇಷವೇನು ನೀವು ಇನ್ನೂ ಕೆಟ್ಟದಾಗಿ ಸಾಮಾನ್ಯ ದೋಷ ಸಂದೇಶವನ್ನು ಕಳೆದ ಪಡೆಯುವುದು, “Exception of type ‘Microsoft.SharePoint.SoapServer.SoapServerException’ ಇಳಿಸಲಾಗಿತ್ತು. ")  ನಿರ್ದಿಷ್ಟವಾಗಿ, ನಾನು GetList ವಿಧಾನದ ಪೂರ್ವಪ್ರತ್ಯಯದ ಯಾವುದೇ ರೀತಿಯ ಒದಗಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ ಎಂದು.  ಕೆಳಗಿನ jQuery ತುಣುಕನ್ನು ಪಾಯಿಂಟ್ ತೋರಿಸುತ್ತದೆ:

image

ನೀವು ಹಾಗೆ ಮಾಡಿದರೆ, ವೆಬ್ ಸೇವೆ ಈ ಪ್ರಕಾರ "ಮೌಲ್ಯ ಶೂನ್ಯ ಸಾಧ್ಯವಿಲ್ಲ" ಜೊತೆಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ ಪಿಟೀಲುವಾದಕ-HTTP ಪ್ರತಿಲೇಖನ ಒದಗಿಸಿದ:

<?xml ನ ಆವೃತ್ತಿ = "1.0" "UTF-8" = ಎನ್ಕೋಡಿಂಗ್?>
  <ಸಾಬೂನು:ಹೊದಿಕೆ
     xmlns:ಸಾಬೂನು ="
HTTP://schemas.xmlsoap.org / ಸಾಬೂನು / ಹೊದಿಕೆ /"    
     xmlns:xsi = "
HTTP://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd ="
HTTP://www.w3.org/2001/XMLSchema">

  <ಸಾಬೂನು:ದೇಹ>
    <ಸಾಬೂನು:ತಪ್ಪು>
      <faultcode>ಸಾಬೂನು:ಪರಿಚಾರಕ</faultcode>
      <faultstring>
        Exception of type ‘Microsoft.SharePoint.SoapServer.SoapServerException’ ಇಳಿಸಲಾಗಿತ್ತು.
      </faultstring>
      <ವಿವರ>
        <ವಾಕ್ಯ xmlns ="
HTTP://schemas.microsoft.com / ಶೇರ್ಪಾಯಿಂಟ್ / ಸಾಬೂನು /">
ಮೌಲ್ಯ ಶೂನ್ಯ ಸಾಧ್ಯವಿಲ್ಲ.
        </errorstring>
      </ವಿವರ>
    </ಸಾಬೂನು:ತಪ್ಪು>
  </ಸಾಬೂನು:ದೇಹ>
</ಸಾಬೂನು:ಹೊದಿಕೆ>

ಸಹಜವಾಗಿ, ನೀವು ಬಹುಶಃ ನಿಮ್ಮ ಆದ ಮೇಲೆ "s0" ಪೂರ್ವಪ್ರತ್ಯಯ ಸೇರಿಸಿ ಎಂದು, ಆದರೆ ಕೆಲವು ಉಪಕರಣಗಳು ಅದನ್ನು ತುತ್ತಾಗಬಲ್ಲ (ಎಕ್ಲಿಪ್ಸ್ ನಂತಹ).

ಈ ಎಲ್ಲಾ ಹೆಚ್ಚು ಗೊಂದಲಮಯವಾಗಿದೆ / ಇತರ ವಿಧಾನಗಳು ಪೂರ್ವಪ್ರತ್ಯಯಗಳು ಸಹಿಸುತ್ತವೆ ಏಕೆಂದರೆ ಹತಾಶೆಯ.  ಉದಾಹರಣೆಗೆ, ದಿ GetListCollection ಇದು prefixed ಮಾಡಲಾಗಿದೆ ವಿಶೇಷವೇನು ವೇಳೆ ವಿಧಾನವನ್ನು ಮನಸ್ಸಿಗೆ ಇಲ್ಲ, ಸಹ "xyzzy" ನಂತಹ ಅಸಂಬದ್ಧ ಪೂರ್ವಪ್ರತ್ಯಯಗಳು ಜೊತೆ:

image

ಈ lists.asmx ಮೂಲಕ ತಕ್ಕಮಟ್ಟಿಗೆ ಸಾಮಾನ್ಯ ತೋರುತ್ತದೆ "ಮೌಲ್ಯ ಶೂನ್ಯ ಸಾಧ್ಯವಿಲ್ಲ" ಆದ್ದರಿಂದ ಆಶಾದಾಯಕವಾಗಿ ಈ ಭವಿಷ್ಯದಲ್ಲಿ ಯಾರಾದರೂ ಔಟ್ ಸಹಾಯ.

</ಕೊನೆಯಲ್ಲಿ>

ನನ್ನ ಬ್ಲಾಗ್ ಚಂದಾದಾರರಾಗಿ.

ನಲ್ಲಿ ಟ್ವಿಟ್ಟರ್ ನನ್ನನ್ನು ಅನುಸರಿಸಿ http://www.twitter.com/pagalvin