从Flex访问Sharepoint服务时出现问题

时间:2010-08-20 06:27:12

标签: flex web-services sharepoint

我正在尝试使用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>

1 个答案:

答案 0 :(得分:1)

如果没有通过网络看到实际SOAP消息的示例,我无法确定,但我相信您在请求中缺少一些包含元素。

对于您的查询,需要将其结构化为:

<query>
  <Query>
    <{CAML QUERY HERE}>
  </Query>
</query>

请注意包含<query>的情况。同一首歌,ViewFields的不同诗句:

<viewFields>
  <ViewFields>
    <FieldRef Name="foo" />
  </ViewFields>
</viewFields>

QueryOptions也必须包含在<queryOptions>元素中。疯狂的SharePoint!