コード例 #1
0
        protected virtual HttpWebRequest CreateHttpWebRequest(IHttpClientRequest clientRequest)
        {
            IHttpClientRequest requestCopy = new HttpClientRequest(clientRequest);

            requestCopy.Authenticaton = requestCopy.Authenticaton ?? _auth;
            Uri            requestUri = requestCopy.BuildRequestUri(this);
            HttpWebRequest request    = (HttpWebRequest)WebRequest.Create(requestUri);

            request.Method                 = requestCopy.Method;
            request.Timeout                = Timeout;
            request.ContentType            = requestCopy.ContentType;
            request.UserAgent              = UserAgent;
            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            requestCopy.Authenticaton?.ApplyManualAuthentication(requestCopy);
            request.Credentials = requestCopy.Authenticaton;
            foreach (var x in Headers)
            {
                request.Headers[x.Key] = x.Value?.ToString();
            }
            foreach (var x in requestCopy.Headers)
            {
                request.Headers[x.Key] = x.Value?.ToString();
            }
            if (requestCopy.Method != "POST")
            {
                return(request);
            }
            byte[] serialized = Serialize(requestCopy.Body, requestCopy.ContentType);
            using (Stream requestStream = request.GetRequestStream())
                requestStream.Write(serialized, 0, serialized.Length);
            if (!Logger.IsTracingEnabled)
            {
                return(request);
            }
            Logger.Trace($"Performing Http Request:");
            Logger.Trace($"[{request.Method}] {request.RequestUri}");
            Logger.Trace($"[BODY] {requestCopy.Body}");
            foreach (var x in request.Headers.AllKeys)
            {
                Logger.Trace($"[HEADER] {x}={request.Headers[x]}");
            }
            return(request);
        }