使用HTTP身份验证与C# WebRequest

27

我想向需要身份验证的页面发起网络请求。 我该如何做? 我找到了一些内容,可能使用Credentials属性,但我不确定如何使用它。

我想对需要身份验证的页面发起网络请求,应该如何操作?我发现可能可以使用Credentials属性,但我不确定如何使用它。

3个回答

44

将新的NetworkCredential实例分配给Credentials属性:

webClient.Credentials = new NetworkCredential("Mehrdad", "Password");

1
这对我没有用,但是ikutsin的答案通过显式设置带有基本身份验证信息的“Authorization”标头对我有效。 - markshep
1
这两种方法(凭据和添加标头)都可以工作。但我不确定哪一种更好,以及为什么? - Archont

22

基本认证示例:

public void SetBasicAuthHeader(WebRequest req, String userName, String userPassword)
{
    string authInfo = userName + ":" + userPassword;
    authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
    req.Headers["Authorization"] = "Basic " + authInfo;
}

强制使用基本HTTP身份验证进行HttpWebReq的方法


这里说得很好。避免多余的交互也可能会成为性能问题。 - tallseth

3

还可以使用自动身份验证。这将使用当前登录用户的凭据。

webClient.Credentials = CredentialCache.DefaultCredentials

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接