我想登录到一个Sharepoint门户网站,但弹出了登录对话框,使用的是NTLM身份验证。我该如何在C#中修改HTTP标头以进行成功的登录请求?我认为我需要向门户网站已登录部分的页面发出HTTPWebRequest,并将HTTP标头集合与此一起发布?
我想登录到一个Sharepoint门户网站,但弹出了登录对话框,使用的是NTLM身份验证。我该如何在C#中修改HTTP标头以进行成功的登录请求?我认为我需要向门户网站已登录部分的页面发出HTTPWebRequest,并将HTTP标头集合与此一起发布?
WebRequest req = WebRequest.Create(tokenUri);
req.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
req.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
WebResponse resp = req.GetResponse();
StreamReader reader = new StreamReader(resp.GetResponseStream());
var token = reader.ReadToEnd().Trim();
这段代码将整个响应读入名为token
的变量中。
要使用NTLM,请参阅John的答案。如果需要在会话之间保留头信息,请查看HttpWebRequest对象上的CookieContainer属性。您需要保留对CookieContainer的引用,并将其附加到您进行的任何其他HttpWebRequests。
var request = (HttpWebRequest)WebRequest.Create(url);
// INIT REQUEST HERE ...
var credential = new NetworkCredential(username, password, domain);
var credentialCache = new CredentialCache();
credentialCache.Add(new Uri(url), "NTLM", credential);
request.Credentials = credentialCache;
// SEND ...
来源:http://predicatet.blogspot.com/2007/01/httpwebrequest-networkcredential-with.html