Weiß jemand, wie ich alle Elemente von einer SharePoint-Liste bekommen könnte?ColdFusion: Wie benutze ich SharePoint GetListItems()
Es sollte möglich sein, die Funktion getListItems() mit 4 Parametern aufzurufen:
- Eine für die Liste, in der die Informationen gespeichert sind in,
- die zweite für die Abfrage,
- die dritte für die angezeigte Felder und
- der vierte, der die Anzahl der Zeilen angibt, die zurückgegeben werden sollen.
Mein Code ist:
<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#">
Aber alles, was ich bekommen ist, dass Fehlermeldung:
Web-Service-Operation GetListItems mit den Parametern {{9BE74555-1150-4AC8-ADE7-EE52923D7CE8} , 3,, 4} kann nicht gefunden werden.
Normalerweise müssen Sie xmlNodes die Funktion übergeben, wie es gesagt wird here.
Ich habe das auch ausprobiert, weiß aber nicht genau, wie man einen xmlNode erstellt. Mein Code, das auch nicht funktioniert, ist diese:
<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#">
Ist die Art, wie ich den Webservice, den richtigen Weg nenne?
Danke, Kevin
EDIT: Dank für Ihre Antwort danken, ich denke, die XML-Elemente arbeiten.
<cfset listsService.GetListItems(
"{9BE74555-1150-4AC8-ADE7-EE52923D7CE8}",
"{1DD69D36-FD18-42B8-B57D-CCA49FD12AFE}",
ndQuery.xmlRoot,
ndViewFields.xmlRoot,
"1",
ndQueryOptions.xmlRoot,
""
)>
Aber jetzt erhalte ich eine "Illegal Argument Ausnahme" (das ist toll, weil es mir erzählt, dass der Webservice reagiert;)):
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 :)>
EDIT 2:
Das ist mein neuer Code (28. April)
<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">
Die Fehlermeldung ist:
Cannot perform web service invocation GetListItems.
The fault returned when invoking the web service operation is:
java.lang.IllegalArgumentException: argument type mismatch
Ich habe die Informationen aus der Antwort, die du auf deine Frage gepostet hast, verschoben - in Zukunft bitte klärende Angaben oder Aktualisierungen in deine Frage einfügen (du kannst immer deine eigenen Sachen bearbeiten). Der Abschnitt "Antworten" ist für tatsächliche Antworten, ich denke, es ist am besten, Sie löschen Ihren Beitrag dort. :) – Tomalak
ok Danke (oder ich einfach einfach "Danke dir"? :)) Hast du eine Idee, was die IllegalArgumentException verursachen könnte? –
Sie können natürlich auf Deutsch wechseln, wenn Sie es wagen. :-D Ich nehme an, dass in den Argumenten immer noch eine Fehlpassung vorliegt, die ColdFusion versucht, implizit auf den Typ zu transformieren, den der WS erwartet, aber fehlschlägt. Siehe die Kommentare zu meiner Antwort. – Tomalak