C# AuthenticationHeaderValue Vs NetworkCredential
我正在尝试使用HttpClient为httppost或httpget编写一个客户端。在谷歌上搜索时,我遇到了在HttpClient对象中设置这些身份验证的方法。一个使用NetworkCredential,另一个使用AuthenticationHeaderValueC# AuthenticationHeaderValue Vs NetworkCredential,c#,.net,C#,.net,我正在尝试使用HttpClient为httppost或httpget编写一个客户端。在谷歌上搜索时,我遇到了在HttpClient对象中设置这些身份验证的方法。一个使用NetworkCredential,另一个使用AuthenticationHeaderValue HttpClient sClient; HttpClientHandler sHandler = new HttpClientHandler(); sHandler.Credentials = new NetworkCredentia
HttpClient sClient;
HttpClientHandler sHandler = new HttpClientHandler();
sHandler.Credentials = new NetworkCredential("UserName", "Password");
sClient = new HttpClient(sHandler);
或
阅读MSDN并没有给我一个关于它们之间差异的明确答案。在这种情况下,除了如何存储其身份验证信息外,两者是否都将执行相同的操作?例如AuthenticationHeaderValue将其放在头中,而另一个不放在头中?就我的用例或最佳实践而言,一种方法比另一种好吗?第二种方法更灵活,您可以指定要使用的身份验证类型(例如,匿名、基本、窗口、证书等)
如果第一种方法无效,请尝试在NetworkCredential上指定第三个参数,即域名。有相同的问题。第一种方法有效,而第二种方法无效。不知道为什么。这里是的SO链接。这是一个链接,指向有相同问题的人。只有第二种方法有效。
HttpClient sClient new HttpClient();
sClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic",Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("UserName:Password")));