Ejemplo n.º 1
0
        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);
            }
        }