繁体   English   中英

使用 HTTP HttpWebRequest 在 C# 中提取共享点数据

[英]using HTTP HttpWebRequest to extract sharepoint data in c#

我正在尝试使用 HttpWebRequest 读取共享点站点,但以下代码引发异常(403 Forbidden):

HttpWebRequest r = (HttpWebRequest)WebRequest.Create(@"https://myCompany.sharepoint.com/sites/it/abc/ScriptAttest/docs/");
r.Method = "GET";
WebResponse rs = r.GetResponse();

如果我添加,我会得到相同的响应

client.Credentials = new NetworkCredential("username", "secret");

(当然使用我的域凭据)

或指定默认凭据。

但是,如果我创建一个浏览器控件(称为 documentBrowser)并执行以下操作:

documentBrowser.Navigate(@"https://myCompany.sharepoint.com/sites/it/abc/ScriptAttest/docs/");

我得到数据。 但是,这需要很长时间,而且我真的不需要显示页面。 我的目标是解析 html 并只提取某些元素。 此外,数据是分阶段出现的,控件在每个段之后触发 DocumentCompleted 事件,所以我真的不知道整个页面何时加载。

SharePoint Online 不支持NetworkCredential documentBrowser.Navigate实际上使用了嵌入式 IE 浏览器,它可能有一些与 SPO 相关的缓存,因此它可以导航到站点。 如果要从 SPO 获取数据,可以使用 Rest API 或 CSOM。 如果您只是想访问站点页面,您可以考虑使用cookie来获取它:

var login    = "admin@***.onmicrosoft.com";
var password = "P@ssw0rd";
var siteUrl  = "https://***.sharepoint.com/";

var creds = new SharePointOnlineCredentials(login, password);
var auth  = creds.AuthenticateAsync(new Uri(siteUrl), true);

var request = (HttpWebRequest)WebRequest.Create(siteUrl);
request.CookieContainer = auth.Result.CookieContainer;

var result = (HttpWebResponse)request.GetResponse();

BR

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM