【发布时间】: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的链接
-
有同样的问题。只有第二种方法有效。