通过HttpClient来调用Web Api接口

/// <summary>
/// HttpClient实现Post请求(异步)
/// </summary>
static async void dooPost()
{
    string url = "http://localhost:52824/api/register";
     //设置HttpClientHandler的AutomaticDecompression
    var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
    //创建HttpClient(注意传入HttpClientHandler)
    using (var http = new HttpClient(handler))
    {
        //使用FormUrlEncodedContent做HttpContent
        var content = new FormUrlEncodedContent(new Dictionary<string, string>()
        {    {"Id","6"},
             {"Name","添加zzl"},
             {"Info", "添加动作"}//键名必须为空
         });  

        //await异步等待回应  

        var response = await http.PostAsync(url, content);
        //确保HTTP成功状态值
        response.EnsureSuccessStatusCode();
        //await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
        Console.WriteLine(await response.Content.ReadAsStringAsync());
    }  

}
/// <summary>
/// HttpClient实现Get请求(异步)
/// </summary>
static async void dooGet()
{
    string url = "http://localhost:52824/api/register?id=1";
    //创建HttpClient(注意传入HttpClientHandler)
    var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };  

    using (var http = new HttpClient(handler))
    {
        //await异步等待回应
        var response = await http.GetAsync(url);
        //确保HTTP成功状态值
        response.EnsureSuccessStatusCode();  

        //await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
        Console.WriteLine(await response.Content.ReadAsStringAsync());
    }
}
/// <summary>
/// HttpClient实现Put请求(异步)
/// </summary>
static async void dooPut()
{
    var userId = 1;
    string url = "http://localhost:52824/api/register?userid=" + userId;  

    //设置HttpClientHandler的AutomaticDecompression
    var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
    //创建HttpClient(注意传入HttpClientHandler)
    using (var http = new HttpClient(handler))
    {
        //使用FormUrlEncodedContent做HttpContent
        var content = new FormUrlEncodedContent(new Dictionary<string, string>()
        {
           {"Name","修改zzl"},
           {"Info", "Put修改动作"}//键名必须为空
        });  

        //await异步等待回应  

        var response = await http.PutAsync(url, content);
        //确保HTTP成功状态值
        response.EnsureSuccessStatusCode();
        //await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
        Console.WriteLine(await response.Content.ReadAsStringAsync());
    }
}  

原文地址:https://www.cnblogs.com/softwyy/p/8684792.html

时间: 2024-10-11 20:51:07

通过HttpClient来调用Web Api接口的相关文章

WebApi系列~通过HttpClient来调用Web Api接口

HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api的方法,基于api项目的特殊性,它需要有一个完全安全的环境,所以,你的api控制器看起来有点特别,只有5个方法,而且都是标准的http方法,我觉得这种设计很不错,很清晰,而且为了实现安全性,它不支持使用传统的表单数据,取而代之的是FromBody参数,它指拿HttpRequestMessage里参数,而不是所

WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递

上一讲中介绍了使用HttpClient如何去调用一个标准的Web Api接口,并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对象进行传递,而这讲主要围绕这个话题来说,接口层添加一个新类User_Info,用来进行数据传递,而客户端使用网页ajax和控制台HttpClient的方式分别进行实现,Follow me! 下面定义一个复杂类型对象 public class User_Info { public int Id { get; s

通过HttpClient来调用Web Api接口~续~实体参数的传递

并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对象进行传递,而这讲主要围绕这个话题来说,接口层添加一个新类User_Info,用来进行数据传递,而客户端使用网页ajax和控制台HttpClient的方式分别进行实现,Follow me! 下面定义一个复杂类型对象 public class User_Info { public int Id { get; set; } public string Name { get; set; }

通过HttpClient来调用Web Api接口,实体参数的传递

下面定义一个复杂类型对象 public class User_Info { public int Id { get; set; } public string Name { get; set; } public string Info { get; set; } } 下面修改上次的api部分,让它对这个对象进行操作 [CorsAttribute("http://localhost:3321")] public class RegisterController : ApiControll

如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问。

由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的问题. 刚开始没做任何处理,用jsonp的方式调用 web api 接口,总是报一个错误,如下: 如果你想用JSONP来获得跨域的数据,WebAPI本身是不支持javascript的callback的,它返回的JSON是这样的: {"YourSignature":"嫁人要嫁程序员,钱多话少死得早"} 然而,JSONP请求期望得到这样的JSON

Web API接口设计经验总结

在Web API接口的开发过程中,我们可能会碰到各种各样的问题,我在前面两篇随笔<Web API应用架构在Winform混合框架中的应用(1)>.<Web API应用架构在Winform混合框架中的应用(2)--自定义异常结果的处理>也进行了总的介绍,在经过我的大量模块实践并成功运行后,总结了这篇随笔,希望对大家有所帮助. 1.在接口定义中确定MVC的GET或者POST方式 由于我们整个Web API平台是基于MVC的基础上进行的API开发,因此整个Web API的接口,在定义的时

Winform混合式开发框架访问Web API接口的处理

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在我的混合式开发框架里面,集成了WebAPI的访问,这种访问方式不仅可以实现简便的数据交换,而且可以在多种平台上进行接入,如Winform程序.Web网站.移动端APP等多种接入方式,Web API的处理方式和微信提供的接口处理规则类似,也是通

Web API接口设计(学习)

1.在接口定义中确定MVC的GET或者POST方式 由于我们整个Web API平台是基于MVC的基础上进行的API开发,因此整个Web API的接口,在定义的时候,一般需要显示来声明接口是[HttpGet]或者[HttpPost],虽然有些接口也可以不用声明,但是避免出现类似下面的错误信息,显式声明还是有好处的. 请求的资源不支持 http 方法“POST 例如在基类定义的查找对象接口如下所示. /// <summary> /// 查询数据库,检查是否存在指定ID的对象 /// </su

微信小程序的Web API接口设计及常见接口实现

微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,通过小程序的请求Web API 平台获取JSON数据后,可以在小程序界面上进行数据的动态展示.在数据的关键 一环中,我们设计和编写Web API平台是非常重要的,通过这个我们可以实现数据的集中控制和管理,本篇随笔介绍基于Asp.NET MVC的Web API接口层的设计和常见接口代码的展示,以便展示我们常规Web API接口层的接口代码设计.参数的处理等内容. 1.Web API整体性的架构设计 我们整体性的架构设计