/// <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); }