应用笔记 · 2023年3月13日

C# 之 HttpClient的单例(Singleton)模式使用示例以及常见问题处理

1、经常遇到的问题

① 远程主机强迫关闭了一个现有的连接

相信大家在使用 HttpClient 的时候遇到过 远程主机强迫关闭了一个现有的连接 的错误,一般的解决方法就是下面这种

解决办法:在请求方法中指定 ServicePoint 安全协议

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;

② POST请求某种情况下请求会失败的解决方案

工作中遇到写正常的 http post 请求会失败的问题,于是就在原有的基础上改动了写代码使用HttpRequestMessage 指定 标头、HTTP 谓词和潜在数据,详情见代码第二个 post 请求方法。

2、使用HttpClient为什么建议使用单例

HttpClient 旨在被实例化一次并在应用程序的整个生命周期中重复使用。为每个请求实例化一个 HttpClient 类将耗尽重负载下可用的套接字数量。将导致 SocketException 错误。

3、基础代码实现