zoukankan      html  css  js  c++  java
  • HTTP BASIC client端

    不同于之前的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验证方式。

  • 相关阅读:
    【leetcode】Binary Search Tree Iterator
    【leetcode】Palindrome Partitioning II
    【leetcode】Best Time to Buy and Sell Stock III
    【leetcode】Best Time to Buy and Sell Stock II
    【leetcode】Longest Consecutive Sequence
    【leetcode】Factorial Trailing Zeroes
    【leetcode】Simplify Path
    【leetcode】Generate Parentheses
    【leetcode】Combination Sum II
    【leetcode】Combination Sum
  • 原文地址:https://www.cnblogs.com/fx2008/p/2819623.html
Copyright © 2011-2022 走看看