我正在尝试使用WebService从Flex访问Sharepoint的Lists服务的getListItems方法。
当我省略请求xml中的查询和viewFields节点时,它工作正常。 但是,如果我在Viewfields中添加任何查询或FieldRef,则会从服务中抛出错误。
以下是代码。
<mx:WebService id="ws2" wsdl="{url}/_vti_bin/Lists.asmx?WSDL" result="ws2result(event)" fault="ws2fault(event)" showBusyCursor="true">
<mx:operation name="GetListItems" resultFormat="e4x">
<mx:request xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>{listId}</listName>
<viewName>{viewId}</viewName>
<ViewFields><FieldRef Name='Locations'/></ViewFields>
</mx:request>
</mx:operation>
</mx:WebService>
没有ViewFields它工作正常。
我们可以使用来自flex的ViewFields和查询吗?
还有什么方法可以使用此服务获得满足特定条件的项目总和?
应用新格式。但仍然是它的投掷错误。
从fiddler捕获的SOAP消息。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<tns:GetListItems xmlns:tns="http://schemas.microsoft.com/sharepoint/soap/"> <tns:listName>{0A1C8CDA-E738-46B7-923D-1D2C599D960F}</tns:listName>
<tns:viewFields>
<tns:Name>ID</tns:Name>
</tns:viewFields>
</tns:GetListItems>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
但是操作标记中的消息传递如下。
<mx:operation name="GetListItems" >
<mx:request xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>\{0A3C3DCA-E744-46C7-916D-1D2C539A960F\}</listName>
<viewFields>
<ViewFields>
<FieldRef Name="ID" />
</ViewFields>
</viewFields>
</mx:request>
</mx:operation>
答案 0 :(得分:1)
如果没有通过网络看到实际SOAP消息的示例,我无法确定,但我相信您在请求中缺少一些包含元素。
对于您的查询,需要将其结构化为:
<query>
<Query>
<{CAML QUERY HERE}>
</Query>
</query>
请注意包含<query>
的情况。同一首歌,ViewFields的不同诗句:
<viewFields>
<ViewFields>
<FieldRef Name="foo" />
</ViewFields>
</viewFields>
QueryOptions也必须包含在<queryOptions>
元素中。疯狂的SharePoint!