.NET 4.5(C#): 在HttpRequestHeaders中设置Basic验证

不同于之前的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 headerstring userstring passEncodingencoding)

{

    //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 headerstring userstring passEncodingencoding)

{

    //Base64编码

    var data = Convert.ToBase64String(encoding.GetBytes(user + ":" + pass));

    //通过HttpRequestHeaders.Add

    header.Add("Authorization""Basic " + data);

}

 

上述都会正确设置HTTP请求头的Authorization字段为Basic验证方式。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值