2011-03-24 104 views
2

我试图在SharePoint 2007中使用owssvr.dll and its URL API来获取一些列表元数据。这是我感兴趣的网站大部分的名单,我可以使用格式化像这样一个网址:为什么owssvr.dll为我的列表返回空结果?

http://hts-app1/compounds/_vti_bin/owssvr.dll?XMLDATA=1&List={F987723C-28A4-47D3-83D7-19094B0267DF} 

我回来默认视图字段元数据的基于XML的列表和记录列表中的一个列表。但是,当我尝试使用另一个GUID作为单独的列表时,我从Web服务器收到一个空的响应。这是一个200响应代码,但是对方头的样子:

Connection:close 
Date:Thu, 24 Mar 2011 17:38:46 GMT 
MicrosoftSharePointTeamServices:12.0.0.4518 
Server:Microsoft-IIS/6.0 
X-Powered-By:ASP.NET 

我敢肯定列表GUID是有效的,因为我可以用的GUID列表,我可以在listedit.aspx页面看到它相匹配。如果我还格式化我的网址,像这样:与Query=*参数

http://hts-app1/compounds/_vti_bin/owssvr.dll?XMLDATA=1&List={F987723C-28A4-47D3-83D7-19094B0267DF}&Query=* 

,我能得到有效的XML,但它只是显示的一切,并不能过滤以我的看法,我真的很想有看法。

我查看了SharePoint日志文件,但找不到与此请求相关的任何内容。

那么,我该如何调试呢?我真的想用一个简单的http GET请求来取回这个元数据,而owssvr.dll似乎是理想的机制。

回答

0

1.在您的URL的查询字符串中提供GUID适用于一个列表,而不适用于其他列表可能是因为列表位于不同的站点。验证sitename是否正确,并确实GUID是List ID。

请注意,上述情况同时适用于SharePoint 2007和2010,但对于SharePoint 2010,可能需要额外的措施,具体取决于您在owssvr.dll上执行命令的环境。

2. query=*不是过滤器参数;它显示列表中所有可用列的架构以及数据,包括SharePoint内部列,通常您不会使用以编程访问以外的方式查看。

为了获得只有那些同时XMLDATA参数设置为true上owssvr.dll都在当前默认视图来电显示命令可见列;像这样:

http://hts-app1/compounds/_vti_bin/owssvr.dll?Cmd=Display&List={F987723C-28A4-47D3-83D7-19094B0267DF}&XMLDATA=TRUE

再次,这是SharePoint 2007仅依赖于执行上下文。

4.

与查询= *参数,我可以得到 有效的XML,但它只是显示 的一切,而不是过滤我 看法,我很想有 视图。

哦,但这不叫过滤;过滤仅基于列值。为此使用额外的FilterField1和FilterValue1参数。

http://hts-app1/compounds/_vti_bin/owssvr.dll" 
      + "?Cmd=Display&List={F987723C-28A4-47D3-83D7-19094B0267DF}" 
      + "&XMLDATA=TRUE&FilterField1=YOUR_FILTER_COLUMN_NAME&FilterValue1" 
      + YOUR_FILTER_COLUMN_VALUE 

起飞“(双引号)和+(加号),并在浏览器测试前(返回)。

+0

感谢您的回复。我确定guid是正确的,因为当我在url中添加'query = *'时,我可以看到正确的列表元数据。这些列表都在同一个SPWeb中。至于你的#2点,我同意。我最终不想使用'Query = *',但我只是想表明我确实可以通过这种方式获得正确的原始列表数据。我尝试了#3建议,并得到了与没有'Cmd'参数相同的行为。对于#4,我列表的默认视图确实是根据字段值进行行筛选(以及包含更少的显示列),这是我想在此使用视图的一个关键原因。 – 2011-03-25 03:21:22

1

您可以指定一个特定的视图,以及喜欢这张

http://{0}/_vti_bin/owssvr.dll?Cmd=Display&List={1}&view={2}&XMLDATA=TRUE 

为例如:

https://foo.com/extranet/_vti_bin/owssvr.dll?Cmd=Display&List=%7B7F7AFB9D%2D6D5D%2D4626%2DBD9D%2D085957DB79AB%7D&view=%7B111EC07E%2DF648%2D443B%2D8DE6%2DB53786BE6762%7D&XMLDATA=TRUE 

获取列表和查看指令的绝对最简单的方法是转到编辑视图并抓取li st &直接从地址栏查看信息。

相关问题