Tag Archives: lists.asmx

Lists.asmx, GetListItems და დასტების

მე აკეთებდა ზოგიერთი კვლევის ვინმე დღეს დაახლოებით list.asmx ვებ სერვისი, როგორც ნაწილი SharePoint 2010 (და უფრო ადრე).  ის იყო შეუძლია მიიღოს სია ნივთები ძირეული საქაღალდე (მათ შორის სახელების საქვეუწყებო ფოლდერები), მაგრამ ვერ მოახერხა ნივთები ქვეპუნქტით საქაღალდეები.  მე რაღაც ეძებს გარშემო internets და ეს გასაკვირი საერთო კითხვაზე.  თუმცა, მე ვერ კარგი პასუხი მარტივი კითხვა, "თუ ვიცი, ფოლდერში, როგორ მივიღებ ნივთები ფოლდერი?"  მართალი გითხრათ, მე არ ცდილობენ ყველა რომ მძიმე წლიდან მე მინდოდა ტექსტური ამ ერთი ჩემს ხნით Smile.

იმისათვის ეს ყველაფერი, მე შეიქმნა საიტი სახელწოდებით "Blogging სცენარი" და საბაჟო სიაში დასახელებული "მორგებული სია Sub ტიპი".  მე მაშინ შექმნილი საქაღალდეები დაასახელა:

  • წელი 2005
  • წელი 2006
  • წელი 2007

მე დასძინა რამდენიმე საკითხი უნდა დირექტორია "2006 წელი".  ეს არის რას ჰგავს:

image

ჩემი მეგობარი არ არის წერა C # კოდი არამედ გამოყენებით ჯავის, ასე საპონი კონვერტში იყო ის, რაც მან ნამდვილად საჭიროა.  იმისათვის რომ, რომ, დავწერე ცოტა jQuery და შემდეგ გამოიყენება fiddler მიიღოს ფაქტობრივი HTTP საუბარი.

აი შესაბამისი jQuery (მე გადაწერა კოდი ქვემოთ ქვემოთ, თუ გინდათ ასლი / პასტა):

image

ისინი უპირველეს უნდა შეიცავდეს ორივე <queryOptions> და <QueryOptions> კვანძის.  მეორე გასაღები იმაში მდგომარეობს, რომ <Folder> კვანძის არის URL, კლიენტს ხელი მიუწვდება.

ამისთვის შეიძლება იყოს სხვა გზები მიიღოს ამ, მაგრამ ეს კარგად მუშაობდა ჩემთვის, როდესაც გამოყენებით jQuery.

აქ არის საპონი კონვერტში ზემოთ:

<soapenv:კონვერტი xmlns:soapenv =’http://schemas.xmlsoap.org / საპნის / კონვერტში /’>                
  <soapenv:Body>
    <GetListItems xmlns =’
http://schemas.microsoft.com / SharePoint / საპნის /’>
      <ფოთლოვანი>საბაჟო სიაში Sub საქაღალდეები</ფოთლოვანი>
      <viewFields>  
        <ViewFields>
          <FieldRef სახელი = 'სათაური’ />
          <FieldRef სახელი = 'EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Folder>
http://demoserver1/Blogging სცენარი / სიებში / საბაჟო სიაში Sub საქაღალდეები / 2006 წელი</Folder>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Body>
</soapenv:კონვერტი>

უამრავი მაგალითი და დისკუსია გარშემო გამიყვანა, რომ ყველა მე უნდა იყო <QueryOptions> და დააკონკრეტა საქაღალდე სახელი.  ჩემთვის, მე უნდა ორივე გადატანა შიგნით <queryOptions> ისევე როგორც დააკონკრეტა მთლიანად კვალიფიციური URL for <Folder> კვანძის.

აი jQuery AJAX კონფიგურაცია:

$(დოკუმენტი).მზად(ფუნქცია() {
       იყო soapEnv =
           "<soapenv:კონვერტი xmlns:soapenv =’http://schemas.xmlsoap.org / საპნის / კონვერტში /’> \
               <soapenv:Body> \
                    <GetListItems xmlns =’http://schemas.microsoft.com / SharePoint / საპნის /’> \
                       <ფოთლოვანი>საბაჟო სიაში Sub საქაღალდეები</ფოთლოვანი> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef სახელი = 'სათაური’ /> \
                              <FieldRef სახელი = 'EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Folder>http://demoserver1/Blogging სცენარი / სიებში / საბაჟო სიაში Sub საქაღალდეები / 2006 წელი</Folder> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Body> \
           </soapenv:კონვერტი>";

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს Twitter-ზე http://www.twitter.com/pagalvin

Lists.asmx, GetList და "მნიშვნელობა არ შეიძლება იყოს null”

აღმოვაჩინე, რომ GetList() მეთოდი lists.asmx ვებ სერვისი უნდა ეწოდოს ძალიან ფრთხილად ან ეს მიდრეკილება იმისათვის, რომ ფარული "ღირებულების არ შეიძლება იყოს null" გამონაკლისი (და ეს ვთქვათ, თქვენ შეგიძლიათ მიიღოთ წარსული უარესი generic შეცდომა, “Exception of type ‘Microsoft.SharePoint.SoapServer.SoapServerException’ ესროლეს ".)  კერძოდ, მივხვდი, რომ ვერ უზრუნველყოფს რაიმე სახის პრეფიქსი on GetList მეთოდით.  შემდეგ jQuery snippet ასახავს წერტილი:

image

თუ თქვენ, რომ, ვებ სერვისი ეხმაურება და "ღირებულების არ შეიძლება იყოს null" როგორც პოსტი ამ fiddler-უზრუნველყოფილი HTTP სტენოგრამა:

<?xml version="1.0" encoding="utf-8"?>
  <საპნის:კონვერტი
     xmlns:საპნის ="
http://schemas.xmlsoap.org / საპნის / კონვერტში /"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd ="
http://www.w3.org/2001/XMLSchema">

  <საპნის:Body>
    <საპნის:ბრალია>
      <faultcode>საპნის:სერვერი</faultcode>
      <faultstring>
        Exception of type ‘Microsoft.SharePoint.SoapServer.SoapServerException’ ესროლეს.
      </faultstring>
      <დეტალურად>
        <errorstring xmlns ="
http://schemas.microsoft.com / SharePoint / საპნის /">
ღირებულება არ შეიძლება იყოს null.
        </errorstring>
      </დეტალურად>
    </საპნის:ბრალია>
  </საპნის:Body>
</საპნის:კონვერტი>

რა თქმა უნდა, თქვენ ალბათ არ დავამატებთ, რომ "s0" პრეფიქსი საკუთარ, მაგრამ ზოგიერთი ინსტრუმენტი არის მიდრეკილება რომ ამის გაკეთება (ისევე როგორც Eclipse).

ეს მით უფრო გაუგებარია / სამწუხარო იმიტომ, რომ სხვა მეთოდები მოითმენს პრეფიქსი.  მაგალითად, the GetListCollection მეთოდი არ იბადება, თუ მას უკვე prefixed, თუნდაც სისულელე ინდექსები როგორიცაა "xyzzy":

image

ეს "ღირებულება არ შეიძლება იყოს null", როგორც ჩანს საკმაოდ საერთო lists.asmx ისე იმედია ეს ხელს შეუწყობს ვინმე out მომავალში.

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს Twitter-ზე http://www.twitter.com/pagalvin