Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AuthenticationHeaderValue Vs NetworkCredential_C#_.net - Fatal编程技术网

C# AuthenticationHeaderValue Vs NetworkCredential

C# AuthenticationHeaderValue Vs NetworkCredential,c#,.net,C#,.net,我正在尝试使用HttpClient为httppost或httpget编写一个客户端。在谷歌上搜索时,我遇到了在HttpClient对象中设置这些身份验证的方法。一个使用NetworkCredential,另一个使用AuthenticationHeaderValue HttpClient sClient; HttpClientHandler sHandler = new HttpClientHandler(); sHandler.Credentials = new NetworkCredentia

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

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")));