Sharepoint 以编程方式获取存储空间分配-列表

Sharepoint 以编程方式获取存储空间分配-列表,sharepoint,post,screen-scraping,Sharepoint,Post,Screen Scraping,我的任务是编写一份报告,从各种SharePoint网站的“存储空间分配”部分提取数据。我可以通过执行一个通用的GET调用来对通用的“文档库”值进行screen scrape,但是我无法通过编程获得“列表”值。当我导航到SharePoint网站(*/_layouts/storman.aspx)时,“文档库”是默认选择。我想我需要发送一个POST呼叫,以便将其更改为“列表”[然后我可以刮取值]。创建适当的POST调用变得很麻烦,因为SharePoint似乎无法识别我的密钥/值对(或者可能我没有提供所

我的任务是编写一份报告,从各种SharePoint网站的“存储空间分配”部分提取数据。我可以通过执行一个通用的GET调用来对通用的“文档库”值进行screen scrape,但是我无法通过编程获得“列表”值。当我导航到SharePoint网站(*/_layouts/storman.aspx)时,“文档库”是默认选择。我想我需要发送一个POST呼叫,以便将其更改为“列表”[然后我可以刮取值]。创建适当的POST调用变得很麻烦,因为SharePoint似乎无法识别我的密钥/值对(或者可能我没有提供所有必要的参数?)

我尝试了这段代码,但没有成功——只返回了“文档库”数据

using (System.Net.WebClient client = new System.Net.WebClient() { UseDefaultCredentials = true })
{
    NameValueCollection myQueryStringCollection = new NameValueCollection();
    myQueryStringCollection.Add(queryParameterName, queryParameterValue);

    client.QueryString = myQueryStringCollection;

    return client.DownloadString(url);
}
我也尝试过这个(和其他想法一起):

私有静态字符串GetWebResponse(字符串url、NameValueCollection参数)
{
var httpWebRequest=(httpWebRequest)WebRequest.Create(url);
httpWebRequest.UseDefaultCredentials=true;
httpWebRequest.ContentType=“应用程序/x-www-form-urlencoded”;
httpWebRequest.Method=“POST”;
var sb=新的StringBuilder();
foreach(参数中的var key.allkey)
sb.追加(键+“=”+参数[键]+“&”);
sb.长度=sb.长度-1;
byte[]requestBytes=Encoding.UTF8.GetBytes(sb.ToString());
httpWebRequest.ContentLength=requestBytes.Length;
使用(var requestStream=httpWebRequest.GetRequestStream())
{
Write(requestBytes,0,requestBytes.Length);
requestStream.Close();
}
Task responseTask=Task.Factory.fromsync(httpWebRequest.BeginGetResponse,httpWebRequest.EndGetResponse,null);
使用(var responseStream=responseTask.Result.GetResponseStream())
{
变量读取器=新的StreamReader(responseStream);
返回reader.ReadToEnd();
}
}
查看_layouts/storman.aspx页面的源代码,我可以看到我需要发送的名称/值对分别是ct100$PlaceHolderMain$m_filterDropdown列表。我通过查看源代码确定了这一点:

<select name="ctl00$PlaceHolderMain$m_filterDropdown" id="ctl00_PlaceHolderMain_m_filterDropdown" class="ms-viewselect">
<option selected="selected" value="Document Libraries">Document Libraries</option>
<option value="Documents">Documents</option>
<option value="Lists">Lists</option>
<option value="Recycle Bin">Recycle Bin</option>
</select>

文档库
文件
列表
回收站

关于如何从这个页面获取列表值,有什么想法吗?

我终于找到了答案

我必须发送SharePoint期望的每个名称/值查询参数对。为了使事情复杂化,我必须首先执行GET请求,以获得SharePoint所期望的_REQUESTDIGEST、_VIEWSTATE、_EVENTVALIDATION值。此外,当我将所有参数发送回SharePoint时,它们都必须进行URL编码

<select name="ctl00$PlaceHolderMain$m_filterDropdown" id="ctl00_PlaceHolderMain_m_filterDropdown" class="ms-viewselect">
<option selected="selected" value="Document Libraries">Document Libraries</option>
<option value="Documents">Documents</option>
<option value="Lists">Lists</option>
<option value="Recycle Bin">Recycle Bin</option>
</select>