예제 #1
0
        /// <summary>
        /// Creates HttpClient method object based on the specified request and
        /// populates any parameters, headers, etc. from the internal request.
        /// </summary>
        /// <param name="request"> The request to convert to an HttpClient method object. </param>
        /// <returns> The converted HttpClient method object with any parameters, headers, etc. from the original request set. </returns>
        private static HttpWebRequest CreateHttpWebRequest(InternalRequest request)
        {
            BceClientConfiguration config      = request.Config;
            IBceCredentials        credentials = config.Credentials;
            string uri           = request.Uri.AbsoluteUri;
            string encodedParams = HttpUtils.GetCanonicalQueryString(request.Parameters, false);

            if (encodedParams.Length > 0)
            {
                uri += "?" + encodedParams;
            }
            var httpWebRequest = WebRequest.Create(uri) as HttpWebRequest;

            httpWebRequest.Timeout          = config.TimeoutInMillis ?? BceClientConfiguration.DefaultTimeoutInMillis;
            httpWebRequest.ReadWriteTimeout =
                config.ReadWriteTimeoutInMillis ?? BceClientConfiguration.DefaultReadWriteTimeoutInMillis;
            if (request.Range != null && request.Range.Length == 2)
            {
                AddRange(httpWebRequest, request.Range);
            }
            if (!string.IsNullOrEmpty(config.ProxyHost) && config.ProxyPort.GetValueOrDefault() > 0)
            {
                WebProxy proxy = new WebProxy(config.ProxyHost, config.ProxyPort.GetValueOrDefault());
                if (config.ProxyCredentials != null)
                {
                    proxy.Credentials = config.ProxyCredentials;
                }
                httpWebRequest.Proxy = proxy;
            }
            if (config.UseNagleAlgorithm != null)
            {
                httpWebRequest.ServicePoint.UseNagleAlgorithm = (bool)config.UseNagleAlgorithm;
            }
            httpWebRequest.ServicePoint.MaxIdleTime =
                config.MaxIdleTimeInMillis ?? BceClientConfiguration.DefaultMaxIdleTimeInMillis;
            httpWebRequest.ServicePoint.ConnectionLimit =
                config.ConnectionLimit ?? BceClientConfiguration.DefaultConnectionLimit;
            httpWebRequest.ServicePoint.Expect100Continue = request.Expect100Continue;
            httpWebRequest.Method = request.HttpMethod;
            return(httpWebRequest);
        }
예제 #2
0
 public override AbstractBceRequest WithRequestCredentials(IBceCredentials p0)
 {
     return(RawWithRequestCredentials(p0));
 }