创建HttpClient
定义
定义
命名空间:
TouchSocket.Http
TouchSocket.Http.WebSockets
安装:
dotnet add package TouchSocket.Http
一、说明
HttpClient
是Http系客户端类,他是基于单个TCP连接的Http客户端。与.NET框架中的HttpClient不同,TouchSocket的HttpClient具有明显的连接、断开连接等动作,且能够复用TCP连接来处理多个Http请求。
二、特点
- 简单易用。
- 基于单个TCP连接,支持连接复用。
- 支持Http/Https协议。
- 支持自定义证书验证。
- 内存池支持,高性能处理。
- 支持流式上传和下载。
- 支持SSE(Server-Sent Events)。
- 基于委托、插件驱动,支持AOP扩展。
三、产品应用场景
- HTTP API调用:RESTful API客户端实现。
- 文件上传下载:大文件流式传输。
- 实时通信:SSE推送消息接收。
- 微服务通信:服务间HTTP通信。
- 爬虫应用:网页数据抓取。
- HTTPS安全通信:SSL/TLS加密传输。
四、可配置项
HttpClient
继承自TcpClient
,所以支持所有TcpClient的所有配置项。
Http基本没有专用配置,但是下面依然会介绍一些在使用Http时的常用相关配置。
4.1 目标服务器地址
HttpClient
必须指定远程服务器地址,支持HTTP和HTTPS协议。支持类型:
- 使用HTTP协议,传入形如:
http://127.0.0.1:7219
的字符串即可。 - 使用HTTPS协议,传入形如:
https://127.0.0.1:7219
的字符串即可。 - 使用域名,必须包含协议类型,形如:
https://api.example.com
或者http://api.example.com:8080
🔄 正在加载代码...
4.2 SSL/TLS配置
当使用HTTPS协议时,HttpClient
支持SSL/TLS加密连接。可以通过SetClientSslOption
方法进行配置。
不过一般来说,如果服务器使用受信任的证书,可以直接使用https://
协议头连接服务器即可。
例如:
🔄 正在加载代码...
如果是自定义证书,则需要手动加载证书,详情见创建Ssl的TcpClient配置。
五、支持插件接口
支持ITcpPlugin所有接口,无特殊接口。
六、创建HttpClient
6.1 简单创建HttpClient
🔄 正在加载代码...
6.2 常规配置创建Http客户端
🔄 正在加载代码...
备注
实际上直接使用ConnectAsync("https://localhost:7219")
的方式是合并了SetupAsync
与ConnectAsync
。所以当需要额外配置时,应当遵循所有配置都在TouchSocketConfig
的约定。这样代码也比较简单明了。
七、发送HTTP请求
因为HttpClient
是面向连接的,所以在发送请求时,请求URL只需要填写主机地址之后的部分(即路由部分)。
7.1 获取字符串响应
🔄 正在加载代码...
7.2 获取字节数组响应
🔄 正在加载代码...
7.3 获取流数据响应(下载文件)
🔄 正在加载代码...