Tag Archives: lists.asmx

Lists.asmx, GetListItems і тэчак

Я рабіў некаторыя даследаванні для каго-то сёння каля службу list.asmx вэб падаюцца як частка SharePoint 2010 (і больш раннія версіі).  Яна была ў стане атрымаць спіс элементаў у каранёвай тэчцы (у тым ліку імёны подпапок), але не мог атрымаць дэталі ў падтэчку.  Я зрабіў некаторыя азіраючыся на інтэрнэт, і гэта дзіўна агульны пытанне.  Яшчэ, Я не мог атрымаць добры адказ на простае пытанне, "Калі я ведаю, што папка, як я магу атрымаць элементы ў тэчцы?"  Каб быць сумленным, Я не спрабаваў ўсё, што цяжка, так як я хацеў высветліць гэта самастойна на некаторы час ўсмешка.

Каб рэалізаваць гэтую магчымасць, Я стварыў сайт пад назвай "Блогі Сцэнарыі» і карыстальніцкі спіс пад назвай "Асаблівы спіс з ўкладзеных тэчак".  Затым я стварыў тэчкі з назвамі:

  • Год 2005
  • Год 2006
  • Год 2007

Я дадаў некалькі пунктаў у тэчку «Год 2006».  Гэта, як ён выглядае:

image

Мой сябар не піша кода C #, а з дапамогай Java, так SOAP канверце было тое, што яна сапраўды неабходная.  Для атрымання гэтага, Я напісаў трохі JQuery і затым выкарыстаў скрыпача, каб атрымаць фактычнае размове HTTP.

Вось адпаведны JQuery (Я скапіяваў код унізе, калі вы хочаце скапіяваць / ўставіць):

image

Яны першы ключ павінен ўключаць <queryOptions> і <QueryOptions> вузла.  Другі ключ з'яўляецца тое, што <Папка> вузел з'яўляецца URL, да якіх кліент мае доступ.

Там могуць быць і іншыя спосабы, каб атрымаць гэтую, але гэта працуе добра для мяне пры выкарыстанні JQuery.

Вось SOAP канверт для дадзеных:

<soapenv:Канверт XMLNS:soapenv =’HTTP://schemas.xmlsoap.org / мыла / канверт /’>                
  <soapenv:Цела>
    <GetListItems XMLNS =’
HTTP://schemas.microsoft.com / SharePoint / мыла /’>
      <Лісцяны>Карыстацкі спіс з ўкладзеных тэчак</Лісцяны>
      <ViewFields>  
        <ViewFields>
          <FieldRef NAME = 'Назва’ />
          <FieldRef NAME = '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 / SharePoint / мыла /’> \
                       <Лісцяны>Карыстацкі спіс з ўкладзеных тэчак</Лісцяны> \
                       <ViewFields> \
                           <ViewFields> \
                              <FieldRef NAME = 'Назва’ /> \
                              <FieldRef NAME = 'EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </ViewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Папка>http://demoserver1/Blogging Сцэнарыі / Спісы / Карыстацкі спіс ўкладзеных тэчак з / Год выпуску: 2006</Папка> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Цела> \
           </soapenv:Канверт>";

</канец>

Падпісацца на мой блог.

Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin

Lists.asmx, GetList і "Значэнне не можа быць пустым”

Я выявіў, што сёння GetList() метад lists.asmx вэб-сэрвіс павінен быць выкліканы вельмі асцярожна ці гэта схільныя кідаць таямнічы "Значэнне не можа быць пустым" выключэнне (і гэта пры ўмове, вы можаце прайсці яшчэ горш агульнае паведамленне пра памылку, “Exception of type ‘Microsoft.SharePoint.SoapServer.SoapServerException’ быў кінуты ".)  Канкрэтна, Я выявіў, што вы не можаце даць любой прэфікс GetList метад.  У наступным фрагменце JQuery ілюструе той факт,:

image

Калі вы зробіце гэта, вэб-службы адказвае "Значэнне не можа быць пустым", як у гэтым скрыпач-пры ўмове 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">

  <мыла:Цела>
    <мыла:Віна>
      <faultcode>мыла:Сервер</faultcode>
      <faultstring>
        Exception of type ‘Microsoft.SharePoint.SoapServer.SoapServerException’ быў кінуты.
      </faultstring>
      <дэталь>
        <XMLNS радок памылкі ="
HTTP://schemas.microsoft.com / SharePoint / мыла /">
Значэнне не можа быць пустым.
        </errorstring>
      </дэталь>
    </мыла:Віна>
  </мыла:Цела>
</мыла:Канверт>

Вядома, Вы, напэўна, не хацеў бы дадаць, што "s0" прэфікс па сваім меркаванні, але некаторыя прылады схільныя гэта рабіць (як зацьменне).

Гэта ўсё больш заблытанай / расчараванне, таму што іншыя метады церпяць прэфіксаў.  Напрыклад, the GetListCollection Метад не пярэчыце, калі ён быў прэфікс, нават глупства прэфіксы як "XYZZY":

image

Гэта «значэнне не можа быць пустым", здаецца, даволі часта з lists.asmx так што спадзяюся, гэта дапаможа камусьці ў будучыні.

</канец>

Падпісацца на мой блог.

Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin