[英]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.