Exemple #1
0
        public HttpResponseHeader(string source)
        {
            _isBinary = false;
            _source   = source;
            StringReader sreader = new StringReader(_source);

            try
            {
                if (ParseResponseCode(sreader.ReadLine()) == false)
                {
                    _isParse = false;
                    return;
                }
                else
                {
                    _headers = HttpHeader.ParseHeader(sreader);

                    if (_httpVersion == HTTP_VERTION.HTTP10)
                    {
                        if (_headers.Get(HTTP_HEADER_KEY.CONNECTION) != null)
                        {
                            if (_headers[HTTP_HEADER_KEY.CONNECTION] == HTTP_HEADER_VALUE.KEEPALLIVE)
                            {
                                _isKeepAllive = true;
                            }
                        }
                        if (_headers.Get(HTTP_HEADER_KEY.PROXY_CONNECTION) != null)
                        {
                            if (_headers[HTTP_HEADER_KEY.PROXY_CONNECTION] == HTTP_HEADER_VALUE.KEEPALLIVE)
                            {
                                _isKeepAllive = true;
                            }
                        }
                    }
                    else
                    {
                        _isKeepAllive = true;
                        if (_headers.Get(HTTP_HEADER_KEY.CONNECTION) != null)
                        {
                            if (_headers[HTTP_HEADER_KEY.CONNECTION] == HTTP_HEADER_VALUE.CLOSE)
                            {
                                _isKeepAllive = false;
                            }
                        }
                        if (_headers.Get(HTTP_HEADER_KEY.PROXY_CONNECTION) != null)
                        {
                            if (_headers[HTTP_HEADER_KEY.PROXY_CONNECTION] == HTTP_HEADER_VALUE.CLOSE)
                            {
                                _isKeepAllive = false;
                            }
                        }
                    }

                    if (_headers.Get(HTTP_HEADER_KEY.TRANSFER_ENCODING) != null)
                    {
                        if (_headers[HTTP_HEADER_KEY.TRANSFER_ENCODING] == HTTP_HEADER_VALUE.CHUNKED)
                        {
                            _isChunked = true;
                        }
                    }
                    else if (_headers.Get(HTTP_HEADER_KEY.CONTENT_LENGTH) != null)
                    {
                        _contentSize = Convert.ToInt32(_headers[HTTP_HEADER_KEY.CONTENT_LENGTH]);
                    }
                }
            }catch {
                _isParse = false;
                return;
            }

            _isBinary = HttpHeader.CheckBinary(_headers);
            _isParse  = true;
        }
Exemple #2
0
        public HttpRequestHeader(string source)
        {
            if (source.Length == 0)
            {
                _isData = false;
                return;
            }
            else
            {
                _isData = true;
            }

            _isBinary = false;
            _source   = source;
            StringReader sreader = new StringReader(_source);

            try
            {
                if (ParseRequestMethod(sreader.ReadLine()) == false)
                {
                    _isParse = false;
                    return;
                }
                else
                {
                    _headers = HttpHeader.ParseHeader(sreader);

                    if (_httpVersion == HTTP_VERTION.HTTP10)
                    {
                        if (_headers.Get(HTTP_HEADER_KEY.CONNECTION) != null)
                        {
                            if (_headers[HTTP_HEADER_KEY.CONNECTION] == HTTP_HEADER_VALUE.KEEPALLIVE)
                            {
                                _isKeepAllive = true;
                            }
                        }
                        if (_headers.Get(HTTP_HEADER_KEY.PROXY_CONNECTION) != null)
                        {
                            if (_headers[HTTP_HEADER_KEY.PROXY_CONNECTION] == HTTP_HEADER_VALUE.KEEPALLIVE)
                            {
                                _isKeepAllive = true;
                            }
                        }
                    }
                    else
                    {
                        _isKeepAllive = true;
                        if (_headers.Get(HTTP_HEADER_KEY.CONNECTION) != null)
                        {
                            if (_headers[HTTP_HEADER_KEY.CONNECTION] == HTTP_HEADER_VALUE.CLOSE)
                            {
                                _isKeepAllive = false;
                            }
                        }
                        if (_headers.Get(HTTP_HEADER_KEY.PROXY_CONNECTION) != null)
                        {
                            if (_headers[HTTP_HEADER_KEY.PROXY_CONNECTION] == HTTP_HEADER_VALUE.CLOSE)
                            {
                                _isKeepAllive = false;
                            }
                        }
                    }

                    if (_headers.Get(HTTP_HEADER_KEY.CONTENT_LENGTH) != null)
                    {
                        _contentSize = Convert.ToInt32(_headers[HTTP_HEADER_KEY.CONTENT_LENGTH]);
                    }

                    if (_headers.Get(HTTP_HEADER_KEY.HOST) != null)
                    {
                        _host = _headers[HTTP_HEADER_KEY.HOST];

                        if (_host.IndexOf(":") != -1)
                        {
                            string[] host = _host.Split(':');
                            _host = host[0];
                            _port = Convert.ToInt32(host[1]);
                        }
                        else
                        {
                            _host = _host;
                            _port = Convert.ToInt32(HTTP_PORT.HTTP);
                        }
                    }
                }
            }catch {
                _isParse = false;
                return;
            }

            _isBinary = HttpHeader.CheckBinary(_headers);
            _isParse  = true;
        }