有誰知道我如何從SharePoint列表中獲取所有項目?ColdFusion:如何使用SharePoint的getListItems()
應該可以調用函數getListItems()用4個參數:
- 一個用於其中的信息被存儲在列表中,
- 第二對於查詢,
- 第三對顯示字段,並且
- 第四個指定要返回的行數。
我的代碼是:
<cfobject webservice="http://sharepointserver:16999/blog/_vti_bin/SiteData.asmx?wsdl" name="siteDataService"
password="pw"
username="user"
>
<cfset siteDataService.GetListItems(
"{9BE74555-1150-4AC8-ADE7-EE52923D7CE8}",
"<Where><Lt><FieldRef Name=""ID"" /><Value Type=""Counter"">3</Value></Lt></Where>",
"<FieldRef Name=""ID"" /><FieldRef Name=""Title"" />",
"4"
)>
<cfset ServiceResponse = GetSOAPResponse(siteDataService)>
<cfdump var="#ServiceResponse#">
但我得到的是錯誤信息:
帶參數的Web服務操作GetListItems {{9BE74555-1150-4AC8-ADE7-EE52923D7CE8} ,3,,4}找不到。
通常你必須通過xmlNodes函數,就像它被告知。
我也試過,但不知道如何製作一個xmlNode。 我的代碼,這也不起作用是這個:
<cfset xmlDoc = XmlNew()>
<cfset ndQuery = xmlElemNew(xmlDoc, "Query")>
<cfset ndViewFields = xmlElemNew(xmlDoc, "ViewFields")>
<cfset ndQueryOptions = xmlElemNew(xmlDoc, "QueryOptions")>
<cfset ndQuery = "<Where><BeginsWith><FieldRef Name='Name' /><Value Type='Text'>D</Value></BeginsWith></Where>">
<cfset ndViewFields = "<FieldRef Name='ID' />">
<cfset ndQueryOptions = "">
<cfset listsService.GetListItems(
"{52D3A638-FA12-44E8-9C17-5FBCD2899199}",
"",
ndQuery,
ndViewFields,
"1",
ndQueryOptions,
""
)>
<cfset ServiceResponse = GetSOAPResponse(listsService)>
<cfdump var="#ServiceResponse#">
是我打電話web服務以正確的方式方法是什麼?
謝謝 凱文
編輯:謝謝您的回答,我覺得元素的工作XML。
<cfset listsService.GetListItems(
"{9BE74555-1150-4AC8-ADE7-EE52923D7CE8}",
"{1DD69D36-FD18-42B8-B57D-CCA49FD12AFE}",
ndQuery.xmlRoot,
ndViewFields.xmlRoot,
"1",
ndQueryOptions.xmlRoot,
""
)>
但現在我得到一個 「非法參數異常」(這是偉大的,因爲它告訴我,該web服務響應;)):
Cannot perform web service invocation GetListItems. The fault returned when invoking the web service operation is: '' java.lang.IllegalArgumentException: [email protected] The error occurred in D:\wwwroot\SharePoint-Tests\blog.cfm: line 83 81 : "1", 82 : ndQueryOptions.xmlRoot, 83 : "" 84 :)>
編輯2:
這是我的新代碼(4月28日)
<cfset xmlDoc = XmlNew()>
<cfset xmlDoc.xmlRoot = xmlElemNew(xmlDoc, "xmlRoot")>
<cfset xmlDoc.xmlRoot.Query = xmlElemNew(xmlDoc, "Query")>
<cfset xmlDoc.xmlRoot.ViewFields = xmlElemNew(xmlDoc, "ViewFields")>
<cfset xmlDoc.xmlRoot.QueryOptions = xmlElemNew(xmlDoc, "QueryOptions")>
<cfset xmlDoc.xmlRoot.Query.XmlChildren[1] = xmlElemNew(xmlDoc, "Where")>
<cfset xmlDoc.xmlRoot.Query.where.XmlChildren[1] = xmlElemNew(xmlDoc, "GT")>
<cfset xmlDoc.xmlRoot.Query.where.gt.XmlChildren[1] = xmlElemNew(xmlDoc, "Value")>
<cfdump var="#xmlDoc#">
<cfset ndQuery = XmlParse("<Query><Where><Gt><FieldRef Name='ID' /><Value Type='Counter'>0</Value></Gt></Where></Query>", true)>
<cfset ndViewFields = XmlParse("<ViewFields><FieldRef Name='ID' /><FieldRef Name='Title' /></ViewFields>", True)>
<cfset ndQueryOptions = XmlParse("<queryOptions xmlns:SOAPSDK9=""http://schemas.microsoft.com/sharepoint/soap/""><QueryOptions/></queryOptions>", True)>
<cfdump var="#ndQuery#">
<cfdump var="#ndViewFields#">
<cfdump var="#ndQueryOptions#">
<cfoutput>#XMLFormat(ndQuery)#</cfoutput><br>
<cfoutput>#XMLFormat(ndViewFields)#</cfoutput><br>
<cfoutput>#XMLFormat(ndQueryOptions)#</cfoutput><br>
<cfinvoke
webservice = "#listsService#"
method = "GetListItems"
returnvariable = "result"
timeout = "10"
>
<cfinvokeargument name="listName" value="{9BE74555-1150-4AC8-ADE7-EE52923D7CE8}">
<cfinvokeargument name="viewName" value="">
<cfinvokeargument name="query" value="#ndQuery.XmlRoot#">
<cfinvokeargument name="viewFields" value="#ndViewFields.XmlRoot#">
<cfinvokeargument name="rowLimit" value="1">
<cfinvokeargument name="queryOptions" value="#ndQueryOptions.XmlRoot#">
<cfinvokeargument name="webID" value="" omit="yes">
<!--- setting "omit" to "yes" will turn the parameter to null --->
</cfinvoke>
<cfdump var="#result#" label="result">
錯誤消息是:
Cannot perform web service invocation GetListItems.
The fault returned when invoking the web service operation is:
java.lang.IllegalArgumentException: argument type mismatch
我已將您發佈到您問題的答案中的信息 - 未來,請將澄清或更新放入您的問題清單(您始終可以編輯自己的東西)。 「答案」部分是針對實際答案的,我認爲最好你在那裏刪除你的帖子。 :) – Tomalak 2009-04-15 15:31:38
好的謝謝(oder soll ich einfach sagen「Danke dir」?:)) 您有什麼想法,可能會導致IllegalArgumentException? – 2009-04-15 15:43:45