2012-09-25 43 views
1

我正在调用Sharepoint的List Web服务并使用getListItems()方法。特别是,我热衷于指定一个CAML查询,因为我真的希望它只检索一个我特别感兴趣的项目。这是通过在我的XML字符串中指定一个查询,以不同程度的组合在EncodedAbsUrl的LinkFileName,URL或FileRef,与返回的0 XML查询结果大部分看起来像这样:getLIstItems方法中的CAML查询返回没有项目的行

<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body><GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/"><listName>{5cbc4407-3851-4e00-964a-bb7e9b430f9f}</listName> <viewName></viewName> <rowLimit>1000</rowLimit> <webID></webID> 

**<query><Query><Where><Eq><FieldRef Name = "FileRef"/><Value Type = "Text">"/Shared%20Documents/Ashish/Word_feb27.doc"</Value></Eq></Where></Query></query>** 

<viewFields><ViewFields><FieldRef Name="FSObjType"/><FieldRef Name="LinkFilename"/><FieldRef Name="UniqueId"/><FieldRef Name="FileRef"/><FieldRef Name="FileRef"/><FieldRef Name="EncodedAbsUrl"/><FieldRef Name="FileSizeDisplay"/><FieldRef Name="_UIVersionString"/><FieldRef Name="_owshiddenversion"/></ViewFields></viewFields></GetListItems> </S:Body></S:Envelope> 

没有这个SOAP请求做工作逸岸的标签,并检索所有物品列表中可用的区域。当我指定查询标记时,挫败开始。尤其是以下的组合已经试图通过我

没有0 FieldRef.name = {LinkFileName,EncodedAbsUrl,URL,FileRef}和Value.type = {文本,URL}

他们要么取得成果字段或返回内部错误。我认为,这是一个语法问题,宁愿将这个问题发给你们,他们过去有可能嘲笑我看到我可能会搞砸了。

感谢

回答

-1

取出<query><Query>标签。

+0

那怎么办?这是正确的语法,没有他们Sharepoint会产生一个内部服务器错误格式错误的请求数据包 – user1020069

+0

好吧对不起,我dnt有任何想法。 – Ishan

1

我会推荐使用CAML Query Builder和Fiddler。查询构建器可以使用Web服务连接SP,并且可以使用该构建查询。在获得预期结果后,使用Fiddler捕获Web服务请求并使用它:)

顺便说一句:您是否考虑过使用Sharepoint Client Object模型?您不必担心SOAP消息。

+0

遗留代码:(。CAML查询生成器在第一次看起来似乎很痛苦。做了一个解决办法,什么是Fiddler? – user1020069

+1

您可以使用Fiddler监视CAML查询生成器和Sharepoint之间的WS(HTTP)流量。在那里,您可以找到SOAP消耗更少的努力(与一次又一次运行你的代码相比(再次:)) – 2012-10-11 19:02:03

+0

同意.. CAML Builder界面不是最好的,但是你已经习惯了它。 – 2012-10-11 19:02:57