不同于之前的HttpWebRequest类型,在.NET 4.5中新的HttpRequestHeaders类型直接有一个Authorization属性,对应类型是:AuthenticationHeaderValue,同样在System.Net.Http.Headers命名空间内。AuthenticationHeaderValue有两个属性Parameter和Scheme。为了弄清这两个参数在对Authorization属性的作用,我们可以做一个简单的测试:
首先得记得加入.NET 4.5中HttpClient相应的命名空间: //+ using System.Net.Http; //+ using System.Net.Http.Headers;
接着在DefaultRequestHeaders中设置AuthenticationHeaderValue,然后输出Authorization的值: using (var http = new HttpClient()) { http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Mgen", "Orca"); //通过HttpHeaders.GetValues获取值 Console.WriteLine(String.Join(", ", http.DefaultRequestHeaders.GetValues("Authorization"))); }
输出: Mgen Orca
原来Authorization属性会被设置成Scheme<空格>Parameter。
因此对于Basic验证,可以使用这样的方法来设置: static async void doo() { using (var http = new HttpClient()) { SetBasicAuthorization(http.DefaultRequestHeaders, "mgen", "123456", Encoding.UTF8);
//后续操作省略 } }
static void SetBasicAuthorization(HttpRequestHeaders header, string user, string pass, Encodingencoding) { //Base64编码 var data = Convert.ToBase64String(encoding.GetBytes(user + ":" + pass)); //设置AuthenticationHeaderValue header.Authorization = new AuthenticationHeaderValue("Basic", data); }
上面是通过设置AuthenticationHeaderValue的。当然.NET中的HttpRequestHeader同样允许直接修改原始的HTTP头数据,通过HttpRequestHeader.Add方法,当然这样很像.NET 4.5前的HttpWebRequest的设置方式: static void SetBasicAuthorization(HttpRequestHeaders header, string user, string pass, Encodingencoding) { //Base64编码 var data = Convert.ToBase64String(encoding.GetBytes(user + ":" + pass)); //通过HttpRequestHeaders.Add header.Add("Authorization", "Basic " + data); }
上述都会正确设置HTTP请求头的Authorization字段为Basic验证方式。 |
.NET 4.5(C#): 在HttpRequestHeaders中设置Basic验证
最新推荐文章于 2024-08-08 18:42:28 发布