public HttpClientHelper()

in iothub/device/src/Transport/Http/HttpClientHelper.cs [45:146]


        public HttpClientHelper(
            Uri baseAddress,
            IAuthorizationProvider authenticationHeaderProvider,
            IDictionary<HttpStatusCode, Func<HttpResponseMessage, Task<Exception>>> defaultErrorMapping,
            TimeSpan timeout,
            Http1TransportSettings transportSettings,
            ProductInfo productInfo,
            IWebProxy proxy,
            bool isClientPrimaryTransportHandler = false)
        {
            _baseAddress = baseAddress;
            _authenticationHeaderProvider = authenticationHeaderProvider;
            _defaultErrorMapping = new ReadOnlyDictionary<HttpStatusCode, Func<HttpResponseMessage, Task<Exception>>>(defaultErrorMapping);
            _productInfo = productInfo;
            _isClientPrimaryTransportHandler = isClientPrimaryTransportHandler;

            if (transportSettings.HttpClient != null)
            {
                _httpClientObj = transportSettings.HttpClient;
                return;
            }

            HttpMessageHandler httpMessageHandler;
            _usingX509ClientCert = transportSettings.ClientCertificate != null;
#if NET451
            TlsVersions.Instance.SetLegacyAcceptableVersions();

#pragma warning disable CA2000 // Dispose objects before losing scope
            // This disposable handler is disposed when the HttpClient it is given to is disposed
            var webRequestHandler = new WebRequestHandler();
#pragma warning restore CA2000 // Dispose objects before losing scope

            if (_usingX509ClientCert)
            {
                webRequestHandler.ClientCertificates.Add(transportSettings.ClientCertificate);
            }

            if (proxy != DefaultWebProxySettings.Instance)
            {
                webRequestHandler.UseProxy = proxy != null;
                webRequestHandler.Proxy = proxy;
            }

            httpMessageHandler = webRequestHandler;
#elif NET5_0_OR_GREATER
#pragma warning disable CA2000 // Dispose objects before losing scope
            // This disposable handler is disposed when the HttpClient it is given to is disposed
            var socketsHandler = new SocketsHttpHandler();
#pragma warning restore CA2000 // Dispose objects before losing scope
            socketsHandler.SslOptions.EnabledSslProtocols = TlsVersions.Instance.Preferred;

            if (!TlsVersions.Instance.CertificateRevocationCheck)
            {
                socketsHandler.SslOptions.CertificateRevocationCheckMode = X509RevocationMode.NoCheck;
            }

            if (_usingX509ClientCert)
            {
                socketsHandler.SslOptions.ClientCertificates =
                    new X509CertificateCollection() { transportSettings.ClientCertificate };
            }

            if (proxy != DefaultWebProxySettings.Instance)
            {
                socketsHandler.UseProxy = proxy != null;
                socketsHandler.Proxy = proxy;
            }

            httpMessageHandler = socketsHandler;
#else // cases other than Net 5.0+ and net451
#pragma warning disable CA2000 // Dispose objects before losing scope
            // This disposable handler is disposed when the HttpClient it is given to is disposed
            var httpClientHandler = new HttpClientHandler();
#pragma warning restore CA2000 // Dispose objects before losing scope

            httpClientHandler.SslProtocols = TlsVersions.Instance.Preferred;
            httpClientHandler.CheckCertificateRevocationList = TlsVersions.Instance.CertificateRevocationCheck;

            if (_usingX509ClientCert)
            {
                httpClientHandler.ClientCertificates.Add(transportSettings.ClientCertificate);
            }

            if (proxy != DefaultWebProxySettings.Instance)
            {
                httpClientHandler.UseProxy = proxy != null;
                httpClientHandler.Proxy = proxy;
            }

            httpMessageHandler = httpClientHandler;
#endif

            ServicePointHelpers.SetLimits(httpMessageHandler, _baseAddress);

            _httpClientObj = new HttpClient(httpMessageHandler, true);

            _httpClientObj.BaseAddress = _baseAddress;
            _httpClientObj.Timeout = timeout;
            _httpClientObj.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue(CommonConstants.MediaTypeForDeviceManagementApis));
            _httpClientObj.DefaultRequestHeaders.ExpectContinue = false;
        }