• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#中HttpClient的简单使用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

介绍

当我们在开发客户端还有少部分服务端程序时,数据需要从 Webapi 服务器取得。在以前我使用的比较多的时 HttpClient。它有着更加灵活的 API。发送请求和接收响应主要是通过 HttpRequestMessage 和 HttpResponseMessage 这来给你个类,通过属性 Content 获取 http 响应内容。

区别

HttpClient 与 WebClient 和 HttpWebRequest 相比,有以下几个主义的

  1. HttpClient 实例初始化时不与服务器域名或者主机地址绑定,也就是說可以通过一个 HttpClient 实例发送多个不同的请求(比如同一个 HttpClient 请求 api.b.com 两个服务器数据)
  2. HttpClient 通过设置 DefaultHeaders 设置 HttpHeader 并且应用于该实例的所有请求
  3. HttpClient 使用可以很容易的处理异步请求(Async / Await)

使用方法

HttpClient 提供有与 Http Method 匹配的方法,比如 GET / POST / PUT ...等。

先实现模拟一个 GET 请求,代码如下

// 传入参数 url 为请求地址
async Task Get(string uri = "http://api.domain.com/search";)
{
    // 使用 using 语法建立一个明确周期的 HttpClient 实例
    using (HttpClient client = new HttpClient())
    {
        try
        {
            // 设置超时限制,有效防止浪费资源
            client.Timeout = TimeSpan.FromSeconds(30);
            //使用 GetAsync 进行异步 HTTPGET 请求
            HttpResponseMessage response = await client.GetAsync(uri);
            // 判断服务器响应代码是否为 2XX
            response.EnsureSuccessStatusCode();
            //使用 await 语法读取响应内容
            string responseBody = await response.Content.ReadAsStringAsync();
 
            Console.WriteLine(responseBody);
        }
        catch (HttpRequestException e)
        {
            Console.WriteLine("Error Message :{0} ", e.Message);
        }
    }
}    

除了直接使用与 Http Method 对应的方法外,还可以单独构建 HttpRequestMessage 实例进行请求

async Task Get(string uri = "http://api.domain.com/search";)
{
    using (HttpClient client = new HttpClient())
    {
        HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Get, uri);
 
        await client.SendAsync(httpRequest)
                .ContinueWith(responseTask =>
                    {
                        Console.WriteLine("Response: {0}", responseTask.Result);
                    });
    }   
}

至于 Post 请求,对于初次接触 HttpClient 的人可能显得有些复杂,比较折腾,另一篇文章再讲解。

最后一点,对于不想折腾的人,建议直接使用 RestSharp ,简单好用,上手容易。

 转自https://zhuanlan.zhihu.com/p/213733869?utm_source=wechat_session


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用vim正则表达式删除C/C++注释及两种注释风格替换发布时间:2022-07-14
下一篇:
windows10installoracle12cerror:[INS-30131]发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap