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验证方式。

  • 相关阅读:
    使用springboot方式配置监听器
    Socket实现服务端
    Tesseract 部署到centos遇到的坑
    Java 机器学习之K-mean
    Java springboot之Mongodb增删改查
    Vue 跳转
    nginx安装、部署前端、请求转发
    Vue 第十四章 Vue项目部署到tomcat服务器
    Vue 第十三章 watch属性和computed属性使用
    Vue 第十二章 命名视图实现经典布局
  • 原文地址:https://www.cnblogs.com/fx2008/p/2819623.html
Copyright © 2011-2022 走看看