AuthenticationHeaderValue 与 NetworkCredential

Fyl*_*lix 5 .net c#

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

HttpClient sClient;
HttpClientHandler sHandler = new HttpClientHandler();
sHandler.Credentials = new NetworkCredential("UserName", "Password");
sClient = new HttpClient(sHandler);
Run Code Online (Sandbox Code Playgroud)

或者

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

在 MSDN 上阅读并没有给我关于它们之间差异的明确答案。在这种情况下,除了身份验证信息的存储方式之外,两者都会执行相同的操作吗?例如 AuthenticationHeaderValue 将其放入标头,而另一个则没有?就我的用例或最佳实践而言,其中一个比另一个更好吗?

fro*_*oxx 1

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

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