Приведенный ниже код работает нормально для меня, и я использую этот httpclient для отправки запросов на конечные точки. В заголовке ответа я получаю URI местоположения для последующего вызова. Я хочу использовать тот же httpclient, так как базовый URI все еще остается в URI местоположения (отличается только ресурс). Как я справлюсь с этим, чтобы воспользоваться преимуществом httpclient как статический экземпляр.
private static HttpClient client;
private static object syncLock = new object();
public static HttpClient GetHttpClient(IApiConfiguration apiConfiguration)
{
if (client == null)
{
lock (syncLock)
{
if (client == null)
{
client = new HttpClient();
client.DefaultRequestHeaders.ConnectionClose = false;
client.Timeout = TimeSpan.FromMilliseconds(apiConfiguration.Timeout);
client.BaseAddress = new Uri(apiConfiguration.BaseUri);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
ServicePointManager.FindServicePoint(client.BaseAddress).ConnectionLeaseTimeout = apiConfiguration.ConnectionLeaseTimeoutinMilliSec;
}
}
}
return client;
}