Example #1
0
        /// <exception cref="InvalidDataException">Request serialization error</exception>
        private HttpWebRequest CreateRequest(HttpClientRequest request, out byte[] data)
        {
            var uri        = request.GetUriFor(_host);
            var webRequest = (HttpWebRequest)WebRequest.Create(uri);

            webRequest.Method = request.Method.Name;
            if (request.Encoder != null)
            {
                webRequest.Headers.Add(HttpHelper.ContentEncodingHeader, request.Encoder.EncodingType);
            }

            if (request.Decoder != null)
            {
                webRequest.Headers.Add(HttpHelper.AcceptEncodingHeader, request.Decoder.EncodingType);
            }
            foreach (var header in request.CustomHeaders)
            {
                if (_specialHeadersMap.ContainsKey(header.Key))
                {
                    _specialHeadersMap[header.Key](header.Value, webRequest);
                }
                else
                {
                    webRequest.Headers.Add(header.Key, header.Value);
                }
            }

            data = null;
            if (request.Content != null)
            {
                data = request.GetData(uri);
                webRequest.ContentLength = data.Length;
                webRequest.ContentType   = request.Content.ContentType;
            }

            if (request.KeepAlive != KeepAliveMode.UpToClient)
            {
                webRequest.KeepAlive = request.KeepAlive == KeepAliveMode.True;
            }

            webRequest.ServicePoint.Expect100Continue = false;
            return(webRequest);
        }