Esempio n. 1
0
        public override Stream GetRequestStream()
        {
            if (RequestSubmitted)
            {
                throw new InvalidOperationException("This operation cannot be performed after the request has been submitted.");
            }

            if (_requestContentBuffer == null)
            {
                if (ContentLength == 0)
                {
                    _requestContentStream = new NeverEndingStream();
                    return(_requestContentStream);
                }

                _requestContentBuffer = new byte[ContentLength];
            }
            else if (ContentLength == default(long))
            {
                _requestContentBuffer = new byte[int.MaxValue];
            }
            else if (_requestContentBuffer.Length != ContentLength)
            {
                Array.Resize(ref _requestContentBuffer, (int)ContentLength);
            }
            return(new MemoryStream(_requestContentBuffer));
        }
Esempio n. 2
0
        private string BuildHttpRequestMessage(Uri requestUri)
        {
            if (RequestSubmitted)
            {
                throw new InvalidOperationException("This operation cannot be performed after the request has been submitted.");
            }

            // See if we have a stream instead of byte array
            if (_requestContentBuffer == null && _requestContentStream != null)
            {
                _requestContentBuffer = _requestContentStream.ToArray();
                _requestContentStream.ForceClose();
                _requestContentStream.Dispose();
                _requestContentStream = null;
                ContentLength         = _requestContentBuffer.Length;
            }

            var message = new StringBuilder();

            message.AppendFormat("{0} {1} HTTP/1.1\r\nHost: {2}\r\n", Method, requestUri, requestUri.Host);

            Headers.Set(HttpRequestHeader.Connection, "close");

            // add the headers
            foreach (var key in Headers.Keys)
            {
                string value = Headers[key.ToString()];
                if (!string.IsNullOrEmpty(value))
                {
                    message.AppendFormat("{0}: {1}\r\n", key, value);
                }
            }

            if (!string.IsNullOrEmpty(ContentType))
            {
                message.AppendFormat("Content-Type: {0}\r\n", ContentType);
            }
            if (ContentLength > 0)
            {
                message.AppendFormat("Content-Length: {0}\r\n", ContentLength);
            }

            // add a blank line to indicate the end of the headers
            message.Append("\r\n");

            // add content
            if (_requestContentBuffer != null && _requestContentBuffer.Length > 0)
            {
                using (var stream = new MemoryStream(_requestContentBuffer, false))
                {
                    using (var reader = new StreamReader(stream))
                    {
                        message.Append(reader.ReadToEnd());
                    }
                }
            }
            else if (_requestContentStream != null)
            {
                _requestContentStream.Position = 0;

                using (var reader = new StreamReader(_requestContentStream))
                {
                    message.Append(reader.ReadToEnd());
                }


                _requestContentStream.ForceClose();
                _requestContentStream.Dispose();
            }

            return(message.ToString());
        }
        private string BuildHttpRequestMessage(Uri requestUri)
        {
            if (RequestSubmitted)
            {
                throw new InvalidOperationException("This operation cannot be performed after the request has been submitted.");
            }

            // See if we have a stream instead of byte array
            if (_requestContentBuffer == null && _requestContentStream != null)
            {
                _requestContentBuffer = _requestContentStream.ToArray();
                _requestContentStream.ForceClose();
                _requestContentStream.Dispose();
                _requestContentStream = null;
                ContentLength = _requestContentBuffer.Length;
            }

            var message = new StringBuilder();
            message.AppendFormat("{0} {1} HTTP/1.1\r\nHost: {2}\r\n", Method, requestUri, requestUri.Host);

            Headers.Set(HttpRequestHeader.Connection, "close");

            // add the headers
            foreach (var key in Headers.Keys)
            {
                string value = Headers[key.ToString()];
                if (!string.IsNullOrEmpty(value))
                    message.AppendFormat("{0}: {1}\r\n", key, value);
            }

            if (!string.IsNullOrEmpty(ContentType))
            {
                message.AppendFormat("Content-Type: {0}\r\n", ContentType);
            }
            if (ContentLength > 0)
            {
                message.AppendFormat("Content-Length: {0}\r\n", ContentLength);
            }

            // add a blank line to indicate the end of the headers
            message.Append("\r\n");

            // add content
            if (_requestContentBuffer != null && _requestContentBuffer.Length > 0)
            {
                using (var stream = new MemoryStream(_requestContentBuffer, false))
                {
                    using (var reader = new StreamReader(stream))
                    {
                        message.Append(reader.ReadToEnd());
                    }
                }
            }
            else if (_requestContentStream != null)
            {
                _requestContentStream.Position = 0;

                using (var reader = new StreamReader(_requestContentStream))
                {
                    message.Append(reader.ReadToEnd());
                }


                _requestContentStream.ForceClose();
                _requestContentStream.Dispose();
            }

            return message.ToString();
        }
        public override Stream GetRequestStream()
        {
            if (RequestSubmitted)
            {
                throw new InvalidOperationException("This operation cannot be performed after the request has been submitted.");
            }

            if (_requestContentBuffer == null)
            {
                if (ContentLength == 0)
                {
                    _requestContentStream = new NeverEndingStream();
                    return _requestContentStream;
                }

                _requestContentBuffer = new byte[ContentLength];
            }
            else if (ContentLength == default(long))
            {
                _requestContentBuffer = new byte[int.MaxValue];
            }
            else if (_requestContentBuffer.Length != ContentLength)
            {
                Array.Resize(ref _requestContentBuffer, (int)ContentLength);
            }
            return new MemoryStream(_requestContentBuffer);
        }