2013-10-14 84 views
1

使用OOB SharePoint 2010 Web服務,我需要使用其URL更新文檔的元數據。是否有Web服務方法,如SPWeb.GetListItem

URL結構如下: [HTTP://web/managedPath/siteCollection/library/folder1/folder2/..../doc.docx]

的更新將會從第三方完成應用程序並不包含任何SharePoint DLL的。

使用SharePoint .Net應用程序,我可以使用[spweb.getlistitem(path)]來處理文檔。但是,您如何通過網絡服務來做同樣的事情?

HTTP:

回答

1

您可以使用列表Web服務///_vti_bin/Lists.asmx

文檔瀏覽:

http://msdn.microsoft.com/en-us/library/lists.lists.getlistitems(v=office.12).aspx

如何獲得listItems中的集合基於CAML查詢(這使用由Visual Studio生成的代理對象,您正在使用其他技術,那麼您需要構建soap請求對象等):

Web_Reference_Folder.Lists listService = new Web_Reference_Folder.Lists(); 
listService.Credentials= System.Net.CredentialCache.DefaultCredentials; 

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='Field1' /> 
    <FieldRef Name='Field2'/>"; 
ndQuery.InnerXml = "<Where><And><Gt><FieldRef Name='Field1'/>" + 
    "<Value Type='Number'>5000</Value></Gt><Gt><FieldRef Name='Field2'/>" + 
    "<Value Type= 
     'DateTime'>2003-07-03T00:00:00</Value></Gt></And></Where>"; 
try 
{ 
    XmlNode ndListItems = 
     listService.GetListItems("List_Name", null, ndQuery, 
     ndViewFields, null, ndQueryOptions, null); 
    MessageBox.Show(ndListItems.OuterXml); 
} 

catch (System.Web.Services.Protocols.SoapException ex) 
{ 
    MessageBox.Show("Message:\n" + ex.Message + "\nDetail:\n" + 
     ex.Detail.InnerText + 
     "\nStackTrace:\n" + ex.StackTrace); 
} 
+0

謝謝路易斯。我希望找到更新Web級別項目的方法。我可以在SharePoint應用程序或PowerShell中完成此操作。如果沒有辦法,我會嘗試使用Lists.asmx服務。 – eHaze

+0

你的意思是「我的希望是找到更新Web級別項目的方法」? – Luis