首页 > 解决方案 > HttpWebRequest 中的 ICredentials

问题描述

我试图发出一个网络请求,并注意到它需要基于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通过了):

CredentialCache cc = new CredentialCache();
cc.Add(
    UrlID,
    "Basic",
    this.Credentials.GetCredential(UrlID, "Basic"));
request.Credentials = cc;

问题是为什么即使它们都继承自它们,它们的行为也会不同ICredentials?不应该HttpWebRequest只访问GetCredential应该返回相同NetworkCredential对象的方法?

谢谢你的澄清。

标签: c#httpwebrequestcredentials

解决方案


推荐阅读