如何将凭据传递给httpwebrequest以访问SharePoint库
问题描述:
我正在尝试使用HttpWebRequest
从SharePoint文档库中读取文件。为了做到这一点,我必须通过一些凭据。我正在使用下面的请求:如何将凭据传递给httpwebrequest以访问SharePoint库
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/msexcel";
request.UserAgent = "Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0";
request.Credentials = new NetworkCredential(UserName, PassWord);
这是传递凭据的正确方法吗?
答
如果您需要从桌面应用程序使用CredentialsCache.DefaultCredentials
(请参阅on MSDN)作为当前用户运行请求。
如果您需要从服务器端代码或不同用户下运行请求,则您的代码看起来很好。
请注意,你应该小心地存储密码 - 考虑使用SecureString
版本的构造函数。
答
如果您需要设置在运行的凭据,看看这个来源:
http://spc3.codeplex.com/SourceControl/changeset/view/57957#1015709
private ICredentials BuildCredentials(string siteurl, string username, string password, string authtype) {
NetworkCredential cred;
if (username.Contains(@"\")) {
string domain = username.Substring(0, username.IndexOf(@"\"));
username = username.Substring(username.IndexOf(@"\") + 1);
cred = new System.Net.NetworkCredential(username, password, domain);
} else {
cred = new System.Net.NetworkCredential(username, password);
}
CredentialCache cache = new CredentialCache();
if (authtype.Contains(":")) {
authtype = authtype.Substring(authtype.IndexOf(":") + 1); //remove the TMG: prefix
}
cache.Add(new Uri(siteurl), authtype, cred);
return cache;
}
答
您还可以使用:
request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
非常感谢你。你能告诉我securestring转换构造函数是什么意思吗? – Tortoise 2011-03-04 06:21:32
http://msdn.microsoft.com/en-us/library/dd783746.aspx – 2011-03-04 17:12:15