【问题标题】:AuthenticationHeaderValue Vs NetworkCredentialAuthenticationHeaderValue 与 NetworkCredential
【发布时间】:2018-05-11 22:52:38
【问题描述】:

我正在尝试使用 HttpClient 为 HTTP Post 或 HTTP Get 编写客户端。当谷歌搜索时,我遇到了这些在 HttpClient 对象中设置这些身份验证的方法。一种使用 NetworkCredential,另一种使用 AuthenticationHeaderValue

HttpClient sClient;
HttpClientHandler sHandler = new HttpClientHandler();
sHandler.Credentials = new NetworkCredential("UserName", "Password");
sClient = new HttpClient(sHandler);

HttpClient sClient new HttpClient();
sClient.DefaultRequestHeaders.Authorization = 
  new AuthenticationHeaderValue("Basic",Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("UserName:Password")));

阅读 MSDN 并没有给我一个关于它们之间差异的明确答案。除了身份验证信息的存储方式之外,这两者是否会做同样的事情?比如 AuthenticationHeaderValue 把它放在标题中,而另一个没有?就我的用例或最佳实践而言,一个比另一个更好吗?

【问题讨论】:

  • 有同样的问题。第一种方法有效,而第二种方法无效。想知道为什么。这是first approach 的 SO 链接。这是second approach的链接
  • 有同样的问题。只有第二种方法有效。

标签: c# .net


【解决方案1】:

第二种方法更加灵活,您可以指定要使用的身份验证类型(例如,匿名、基本、窗口、证书等)。

如果您的第一种方法不起作用,请尝试在 NetworkCredential 上指定第三个参数,即域名。

【讨论】:

    猜你喜欢
    • 2014-05-23
    • 2017-02-19
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多