private HttpClient GetClient(RequestData requestData) { var hashCode = requestData.GetHashCode(); HttpClient client; if (this._clients.TryGetValue(hashCode, out client)) { return(client); } lock (_lock) { if (this._clients.TryGetValue(hashCode, out client)) { return(client); } var handler = CreateHttpClientHandler(requestData); client = new HttpClient(handler, false) { Timeout = requestData.RequestTimeout }; client.DefaultRequestHeaders.ExpectContinue = false; this._clients.TryAdd(hashCode, client); return(client); } }
private HttpClient GetClient(RequestData requestData) { var hashCode = requestData.GetHashCode(); HttpClient client; if (this._clients.TryGetValue(hashCode, out client)) { return(client); } lock (_lock) { if (this._clients.TryGetValue(hashCode, out client)) { return(client); } var handler = new HttpClientHandler { AutomaticDecompression = requestData.HttpCompression ? GZip | Deflate : None }; if (!requestData.ProxyAddress.IsNullOrEmpty()) { var uri = new Uri(requestData.ProxyAddress); var proxy = new WebProxy(uri); var credentials = new NetworkCredential(requestData.ProxyUsername, requestData.ProxyPassword); proxy.Credentials = credentials; handler.Proxy = proxy; } if (requestData.DisableAutomaticProxyDetection) { handler.Proxy = null; } client = new HttpClient(handler, false) { Timeout = requestData.RequestTimeout }; client.DefaultRequestHeaders.ExpectContinue = false; //TODO add headers //client.DefaultRequestHeaders = this._clients.TryAdd(hashCode, client); return(client); } }