.NET 4.5(C#): 在HttpRequestHeaders中設定Basic驗證
首先得記得加入.NET 4.5中HttpClient相應的名稱空間:
//+ using System.Net.Http;
//+ using System.Net.Http.Headers;
接著在DefaultRequestHeaders中設定AuthenticationHeaderValue,然後輸出Authorization的值:
using (varhttp=newHttpClient())
{
http.DefaultRequestHeaders.Authorization=newAuthenticationHeaderValue("Mgen", "Orca");
//通過HttpHeaders.GetValues獲取值
Console.WriteLine(String.Join(", ", http.DefaultRequestHeaders.GetValues("Authorization"
}
輸出:
Mgen Orca
原來Authorization屬性會被設定成Scheme<空格>Parameter。
因此對於Basic驗證,可以使用這樣的方法來設定:
staticasyncvoiddoo()
{
using (varhttp=newHttpClient())
{
SetBasicAuthorization(http.DefaultRequestHeaders, "mgen", "123456", Encoding.UTF8);
//後續操作省略
}
}
staticvoidSetBasicAuthorization(HttpRequestHeadersheader,
{
//Base64編碼
vardata=Convert.ToBase64String(encoding.GetBytes(user+":"+pass));
//設定AuthenticationHeaderValue
header.Authorization=newAuthenticationHeaderValue("Basic", data);
}
上面是通過設定AuthenticationHeaderValue的。當然.NET中的HttpRequestHeader同樣允許直接修改原始的HTTP頭資料,通過HttpRequestHeader.Add方法,當然這樣很像.NET 4.5前的HttpWebRequest的設定方式:
staticvoidSetBasicAuthorization(HttpRequestHeadersheader, stringuser, stringpass, Encodingencoding)
{
//Base64編碼
vardata=Convert.ToBase64String(encoding.GetBytes(user+":"+pass));
//通過HttpRequestHeaders.Add
header.Add("Authorization", "Basic "+data);
}
上述都會正確設定HTTP請求頭的Authorization欄位為Basic驗證方式。