C# HttpWebRequest中的ICredentials
我试图发出一个web请求,并注意到它需要基于C# HttpWebRequest中的ICredentials,c#,httpwebrequest,credentials,C#,Httpwebrequest,Credentials,我试图发出一个web请求,并注意到它需要基于ICredentials接口的凭据 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(UrlID); request.Method = WebRequestMethods.Http.Get; request.ContentType = "text/json"; request.Credentials = this.Credentials; 我已经在我的配置类中实现了该接口,所以我可以
ICredentials
接口的凭据
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(UrlID);
request.Method = WebRequestMethods.Http.Get;
request.ContentType = "text/json";
request.Credentials = this.Credentials;
我已经在我的配置类中实现了该接口,所以我可以跳过在类之间传递用户名和密码
public NetworkCredential GetCredential(Uri uri, string authType)
{
return new NetworkCredential(Login, _Password);
}
但是,它无法进行身份验证。我找到了另一种使用CredentialCache
的方法,该方法有效(请注意,传递的是相同的NetworkCredential
):
问题是,即使它们都继承自ICredentials
,它们的行为为何会有所不同?HttpWebRequest
不应该只访问GetCredential
方法,该方法应该返回相同的NetworkCredential
对象吗
感谢您的澄清。我还不能自己测试它,但我认识到,在GetCredential函数中,您正在传递两个您在任何地方都不使用的参数。确实不必将它们进一步传递给构造函数?@rekcul
NetworkCredential
没有属性Uri
,也没有将Uri
作为参数的构造函数。
CredentialCache cc = new CredentialCache();
cc.Add(
UrlID,
"Basic",
this.Credentials.GetCredential(UrlID, "Basic"));
request.Credentials = cc;