namespace OSS.Tools.Http
{
///
/// HttpClient 辅助类
///
public static class HttpClientHelper
{
///
/// HttpClient 的工厂实例
///
public static IHttpClientFactory? HttpClientFactory { get; set; }
///
/// 获取HttpClient请求
///
///
///
/// 返回 HttpClientFactory 创建的对象,
/// 如果 HttpClientFactory 未初始化,则在固定时间间隔(五分钟)返回固定的HttpClient
///
internal static HttpClient? CreateClient(string? sourceName = null)
{
if (HttpClientFactory != null)
{
return string.IsNullOrEmpty(sourceName) ?
HttpClientFactory.CreateClient() :
HttpClientFactory.CreateClient(sourceName);
}
return GetDefaultClient();
}
private static HttpClient? _client;
private static DateTime _lastTime = DateTime.Now;
///
/// 配置请求处理类
///
///
private static HttpClient GetDefaultClient()
{
if (_client != null)
{
if ((DateTime.Now - _lastTime).TotalMinutes < 5) {
return _client;
}
}
_lastTime = DateTime.Now;
var handler = new HttpClientHandler { UseProxy = false };
return _client = new HttpClient(handler);
}
}
}