C# HttpClient 基本使用方式(一)
.NetCore主要提供了HttpWebRequest,WebClient,HttpClient这三种访问web的方式,其中HttpWebRequest,WebClient都在官方被标注为已过时,如果没有特殊需求,一般情况下还是使用官方推荐的HttpClient方式。

HttpClient 的基本使用方法
使用HttpClient发送请求一般是如下几步:
1.创建HttpClient对象
2.配置HttpClient对象的属性,如Header,请求方式等
3.执行请求获取访问对象的HttpResponse
4.处理得到的HttpResponse
using (HttpClient client = new HttpClient())
{
HttpResponseMessage responseMessage = await client.GetAsync(url);
responseMessage.EnsureSuccessStatusCode();//确认接口返回StatusCode,如果不是200则返回异常
string result = responseMessage.Content.ReadAsStringAsync().Result;
}
如果需要配置Header,可以在执行client之前添加
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes(" account:password")));
但是根据最近的官方文档,using方式存在一定不确定性,多次请求的并发的时候用using不是很好的方式
using 语句中声明和实例化它并非首选操作,因为释放 HttpClient 对象时,基础套接字不会立即释放,这可能会导致套接字耗尽问题,最终可能会导致 SocketException 错误。要解决此问题,推荐的方法是将 HttpClient 对象创建为单一对象或静态对象
HttpClient 旨在实例化一次,并在应用程序的整个生命周期内重复使用
所以建议在开始就创建静态对象HttpClient 然后再使用
private static HttpClient Client = new HttpClient();
··········
Client.Dispose();
通过新建静态对象的方式的可以让电脑的资源占用情况得到明显的改善,但是该情况并不适用于设置不同请求头的情况,这时候可以使用IHttpClientFactory来实现
IHttpClientFactory是在 .NET Core 2.1 中引入的,使用服务可能需要 IHttpClientFactory 作为带有 DI 的构造函数参数。
C# HttpClient 基本使用方式(一)的更多相关文章
- Asp.Net Core中HttpClient的使用方式
在.Net Core应用开发中,调用第三方接口也是常有的事情,HttpClient使用人数.使用频率算是最高的一种了,在.Net Core中,HttpClient的使用方式随着版本的升级也发生了一些变 ...
- 07_android入门_採用HttpClient的POST方式、GET方式分别实现登陆案例
1.简单介绍 HttpClient 是 Apache Jakarta Common 下的子项目,能够用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,而且它支持 HTTP 协议 ...
- HttpClient使用GET方式通过代理服务器读取页面的例子
import java.io.BufferedReader;import java.io.InputStreamReader;import org.apache.http.HttpEntity;imp ...
- HttpClient Get/Post方式调用Http接口
本节摘要:本节主要分别介绍如何用get方式.post方式向http接口发送数据. preparation 1. 项目环境如下: myeclipse6.5 .tomcat5.0.system:xp.JD ...
- HttpClient通过Post方式发送Json数据
服务器用的是Springmvc,接口内容: @ResponseBody @RequestMapping(value="/order",method=RequestMethod.PO ...
- HttpClient 设置代理方式
HttpClient httpClient = new HttpClient(); //设置代理服务器的ip地址和端口 httpClient.getHostConfiguration().setPro ...
- 使用HttpClient进行Get方式通信
下载apache包 http://hc.apache.org/downloads.cgi 比较eclipse自带api,简单,易上手 实例: package zw1; import java.io.I ...
- 使用 HttpClient 进行 Post 方式通信
1.TestPost.java package testhttpclient; import java.io.IOException;import java.util.ArrayList;import ...
- 使用HttpClient进行Get方式通信(使用HttpGet获取网页数据)
1.项目结构 导入jar包 jar包去官网下载解压后项目新建lib目录,将解压包中的lib目录中的zip拷入项目lib目录文件夹,然后build path-->配置到项目中 2.TestGet. ...
- HttPclient 以post方式发送json
使用HttpClient 以POST的形式发送json字符串 步骤: 1.url .parameters 2.创建httpClient对象 3.创建HttpPost对象 4.为post对象设置参数 5 ...
随机推荐
- 当一名有着 10w+ 听众的播客主播开始做 App
名字: AAAny 开发者 / 团队: AAAny Team 平台: iOS 请简要介绍下这款产品 AAAny 是一个专为 AMA(我们称之为 AAA)设计的 App.多解释一下的话,其实 AAA 是 ...
- LabVIEW图标编辑器中的文本变得模糊
问题详述 在LabVIEW图标编辑器中将文本添加到VI图标时,如果我将字体大小设置为小于10,文本会变得模糊.当字体大小设置为大于11时,文本会正常地显示,但是字体则变得太大而无法放入图标中. 真难看 ...
- 全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自定义类的数据封装
全网最适合入门的面向对象编程教程:06 类和对象的 Python 实现-自定义类的数据封装 摘要: 本文我们主要介绍了数据封装的基本概念和特性,如何设置自定义类的私有属性和私有方法,protect 属 ...
- 全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签(一个帮你提升coding效率的小技巧)
摘要: 本文介绍了PyCharm IDE中代码标签的定义.类型和使用方法. 往期推荐: 学嵌入式的你,还不会面向对象??! 全网最适合入门的面向对象编程教程:00 面向对象设计方法导论 全网最适合入门 ...
- 将传统应用带入浏览器的开源先锋「GitHub 热点速览」
现代浏览器已经不再是简单的浏览网页的工具,其潜能正在通过技术不断地被挖掘和扩展.得益于 WebAssembly 等技术的出现,让浏览器能够以接近原生的速度执行非 JavaScript 语言编写的程序, ...
- oeasy教您玩转 linux 010212 管道 pipe
上一部分我们都讲了什么? 牛说cowsay 牛可以有各种表情 可以自定义眼睛 可以变成各种别的小动物 可以说也可以想cowthink 我们也想让牛说出字符画的感觉 回顾字符画 下载figlet和toi ...
- C# 使用模式匹配的好处,因为好用所以推荐~
类型检查和转换:当你需要检查对象是否为特定类型,并且希望在同一时间内将其转换为那个类型时,模式匹配提供了一种更简洁的方式来完成这一任务,避免了使用传统的as和is操作符后还需要进行额外的null检查. ...
- Pandas库学习笔记(5)---Pandas Panel
Pandas Panel Pandas Panel基本操作 Panel数据3D容器. 术语 Panel data 源自计量经济学,名称来之于pandas − pan(el)-da(ta)-s. 3个轴 ...
- 系动词&使役动词
系动词 系动词的作用就是赋值 I am a rabbit 把 a rabbit赋值给i我 我是一只兔子 The rabbit is smart 这兔子是聪明的 smart赋值给兔子 系动词连系的方式, ...
- Jmeter函数助手23-intSum
intSum函数可用于计算两个或多个整数值的和. 要添加的第一个整数:必填,填入整数,不能为小数 要添加的第二个整数:必填,填入整数,不能为小数 存储结果的变量名(可选) 1. intSum函数求多个 ...