Archivo de la etiqueta: Servicios Web de SharePoint

Lists.asmx, GetListItems y carpetas

Estaba haciendo algunas investigaciones para alguien hoy alrededor del servicio web de list.asmx proporcionado como parte de SharePoint 2010 (y anteriores).  Ella fue capaz de obtener los elementos de lista en la carpeta raíz (incluidos los nombres de las subcarpetas), pero no se pudo obtener elementos en las subcarpetas.  Hice algunos mirando alrededor de la internets y es una cuestión sorprendentemente común.  Todavía, No podía obtener una buena respuesta a la pregunta simple, "si sé la carpeta, Cómo obtener los elementos de la carpeta?”  Para ser honesto, No intente duro todo lo que ya he quería figura esta uno fuera de mi propia durante un tiempo Sonreír.

Para configurar esto, He creado un sitio llamado "Blogging escenarios" y una lista personalizada denominada "Lista personalizada con las subcarpetas".  A continuación, crear carpetas con el nombre:

  • Año 2005
  • Año 2006
  • Año 2007

He añadido algunos elementos a la carpeta "Año 2006".  Esto es lo que parece:

image

Mi amigo no escribir código C# sino más bien mediante Java, por lo que la envoltura SOAP era lo que necesitaba realmente.  Para conseguir, Escribí un poco de jQuery y entonces utilizarse violinista para obtener la conversación real de HTTP.

Aquí es el jQuery pertinente (He copiado el código abajo a continuación si desea copiar y pegar):

image

Su primera clave es incluir tanto un <queryOptions> y <QueryOptions> nodo.  La segunda clave es que el <Carpeta> el nodo es una dirección URL a la que el cliente tiene acceso.

Puede haber otras formas de obtener esto, pero esto funcionó bien para mí cuando usando jQuery.

Aquí es la envoltura SOAP para la anterior:

<soapenv:Xmlns envolvente:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Cuerpo>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Lista personalizada con las subcarpetas</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef nombre =' título’ />
          <FieldRef nombre ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Carpeta>
http://demoserver1/blogs Lista personalizada de listas de escenarios con Sub carpetas/año 2006</Carpeta>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Cuerpo>
</soapenv:Envolvente>

Un montón de ejemplos y debate en torno a esto me llevó a creer que todo lo que necesito <QueryOptions> y especifique un nombre de carpeta.  Para mí, Yo necesito a ambos envolverlo dentro <queryOptions> así como especificar una dirección URL completa de la <Carpeta> nodo.

Aquí está el programa de instalación de AJAX jQuery:

$(documento).listo(función() {
       var soapEnv =
           "<soapenv:Xmlns envolvente:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Cuerpo> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Lista personalizada con las subcarpetas</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nombre =' título’ /> \
                              <FieldRef nombre ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Carpeta>http://demoserver1/Blogging Lista personalizada de listas de escenarios con Sub carpetas/año 2006</Carpeta> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Cuerpo> \
           </soapenv:Envolvente>";

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin