.NET 4.5(C#): 在HttpRequestHeaders中設定Basic驗證

來源:互聯網
上載者:User

不同於之前的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, Encoding encoding)

{

    //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, Encoding encoding)

{

    //Base64編碼

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

    //通過HttpRequestHeaders.Add

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

}

 

上述都會正確設定HTTP要求標頭的Authorization欄位為Basic驗證方式。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.