2010-06-08 3 views
1

J'ai regardé beaucoup de questions précédentes posées sur sharepoint et l'accès aux objets via les services web, et je suis assez convaincu que les tâches peuvent être accessibles via l'interface Lists.Accéder aux tâches Sharepoint via des services Web?

Quelqu'un peut-il vérifier cela pour moi?

Aussi, si quelqu'un a des exemples de cela, je serais très reconnaissant. Je ne suis pas un type Sharepoint mais je dois me connecter à une instance juste pour récupérer des objets de tâche.

Répondre

4

En supposant que vous voulez une solution de code à l'aide de Visual Studio et C#

Ajouter un web reference à votre liste SharePoint Web Service [http://[server-url]/_vti_bin/lists.asmx]

Créer une nouvelle classe similaire à celui ci-dessous:

using System; 
using System.Text; 
using System.Xml; 
using System.Text.RegularExpressions; 
using System.Net;    

public class SharePointList 
{ 

    public void ReadSharePointList() 
    { 
    SPList.Lists listService = new SPList.Lists(); 

      try 
      { 
       // Retreive the URL to the list web service from the application cache 
       listService.Url = "http://[server-url]/_vti_bin/Lists.asmx"; 
       // Retreive the GUID for the sharepoint list 
     // To find the GUID for your list, navigate to your SharePoint list and select Settings > List Settings. 
     // The browser url will display http://[server-url]/_layouts/listedit.aspx?List=%7B7A4C9C52%2DE7E7%2D4582%2D926E%2DC70D048F9071%7D 
     // The %7B7A4C9C52%2DE7E7%2D4582%2D926E%2DC70D048F9071%7D is your GUID that you need to transform 
     // %7B = { 
     // %2D = - 
     // %7D = } 
     // e.g. %7B7A4C9C52%2DE7E7%2D4582%2D926E%2DC70D048F9071%7D = {7A4C9C52-E7E7-4582-926E-C70D048F9071} 

       string listName = {YOUR LIST GUID HERE}; 

       // SharePoint Web Serices require authentication 
       string serviceAccountID = [USERID]; 
       string serviceAccountPW = [PASSWORD]; 
       listService.Credentials = new NetworkCredential(serviceAccountID, serviceAccountPW); 

       XmlDocument xmlDoc = new System.Xml.XmlDocument(); 

       XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element,"Query",""); 
       XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element,"ViewFields",""); 
       XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element,"QueryOptions",""); 

       ndQueryOptions.InnerXml = "<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>" + 
              "<DateInUtc>TRUE</DateInUtc>"; 

       ndViewFields.InnerXml = "<FieldRef Name=\"Title\" />" + 
             "<FieldRef Name=\"Search_x0020_Value\" />"; 

       // Form a query for the list items where Start Date is null or <= today's date 
       ndQuery.InnerXml = "<Where>" + 
            "<Or>" + 
            "<IsNull><FieldRef Name=\"Start_x0020_Date\"/></IsNull>" + 
            "<Leq><FieldRef Name=\"Start_x0020_Date\"/><Value Type=\"DateTime\"><Today/></Value></Leq>" + 
            "</Or>" + 
            "</Where>" + 
            "<OrderBy><FieldRef Name=\"Sort_x0020_Order\" Ascending=\"TRUE\" /></OrderBy>"; 

       XmlNode ndListItems = listService.GetListItems(listName, null, ndQuery, ndViewFields, null, ndQueryOptions, null); 

       foreach (XmlNode node in ndListItems) 
       { 
        if (node.Name == "rs:data") 
        { 
         for (int f = 0; f < node.ChildNodes.Count; f++) 
         { 
          if (node.ChildNodes[f].Name == "z:row") 
          { 
            //DO SOMETHING WITH YOUR RESULTS 
           string test = node.ChildNodes[f].Attributes["ows_Title"].Value, node.ChildNodes[f].Attributes["ows_Search_x0020_Value"].Value; 
          } 
         } 
        } 
       } 
      } 
      catch (System.Web.Services.Protocols.SoapException ex) 
      { 
      //HANDLE ERRORS 
      } 
    } 
} 
Questions connexes