Esempio n. 1
0
 public void ParseHeader(IList header)
 {
     this.BeginUpdate();
     try
     {
         this.Clear();
         HeaderFieldList fieldList = new HeaderFieldList();
         HeaderFieldList.GetHeaderFieldList(0, header, fieldList);
         this.InternalParseHeader(header, fieldList);
         StringCollectionEx ex = new StringCollectionEx();
         foreach (HeaderField field in fieldList)
         {
             if (!this.knownFields.Contains(field.Name, true))
             {
                 ex.Add(field.Name + ": " + HeaderFieldList.GetHeaderFieldValue(header, field));
             }
         }
         if (ex.Count > 0)
         {
             this.ExtraFields = ex.ToArray();
         }
     }
     finally
     {
         this.EndUpdate();
     }
 }
        protected internal override void ParseHeader(IList header, HeaderFieldList fieldList)
        {
            base.ParseHeader(header, fieldList);
            this.ContentType = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Content-Type");
            string source = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Content-Disposition");

            this.FieldName = HeaderFieldList.GetHeaderFieldValueItem(source, "name=");
        }
Esempio n. 3
0
        protected virtual void ParseContentType(IList header, HeaderFieldList fieldList)
        {
            string source = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Content-Type");

            this.ContentType = HeaderFieldList.GetHeaderFieldValueItem(source, string.Empty);
            this.Boundary    = HeaderFieldList.GetHeaderFieldValueItem(source, "boundary=");
            this.CharSet     = HeaderFieldList.GetHeaderFieldValueItem(source, "charset=");
        }
Esempio n. 4
0
 private void ProcessCookies(StringCollection responseHeader, HeaderFieldList fieldList, string fieldName)
 {
     foreach (HeaderField field in fieldList)
     {
         if (string.Compare(field.Name, fieldName, true, CultureInfo.InvariantCulture) == 0)
         {
             this.ParseResponseCookie(HeaderFieldList.GetHeaderFieldValue(responseHeader, field));
         }
     }
 }
        private string[] GetAuthChallenge(IList header, HeaderFieldList fieldList, string fieldName)
        {
            ArrayList list = new ArrayList();

            foreach (HeaderField field in fieldList)
            {
                if (string.Compare(fieldName, field.Name, true, CultureInfo.InvariantCulture) == 0)
                {
                    list.Add(HeaderFieldList.GetHeaderFieldValue(header, field));
                }
            }
            return((string[])list.ToArray(typeof(string)));
        }
Esempio n. 6
0
 protected override void InternalParseHeader(IList header, HeaderFieldList fieldList)
 {
     base.InternalParseHeader(header, fieldList);
     this.Accept             = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Accept");
     this.AcceptCharSet      = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Accept-Charset");
     this.AcceptEncoding     = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Accept-Encoding");
     this.AcceptLanguage     = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Accept-Language");
     this.Authorization      = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Authorization");
     this.Host               = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Host");
     this.ProxyAuthorization = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Proxy-Authorization");
     this.Range              = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Range");
     this.Referer            = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Referer");
     this.UserAgent          = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "User-Agent");
 }
 protected override void InternalParseHeader(IList header, HeaderFieldList fieldList)
 {
     base.InternalParseHeader(header, fieldList);
     this.AcceptRanges      = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Accept-Ranges");
     this.Age               = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Age");
     this.Allow             = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Allow");
     this.ContentRange      = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Content-Range");
     this.ETag              = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "ETag");
     this.Location          = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Location");
     this.RetryAfter        = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Retry-After");
     this.Server            = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Server");
     this.Authenticate      = this.GetAuthChallenge(header, fieldList, "WWW-Authenticate");
     this.ProxyAuthenticate = this.GetAuthChallenge(header, fieldList, "Proxy-Authenticate");
 }
Esempio n. 8
0
        public void GetResponseCookies(StringCollection responseHeader)
        {
            base.Clear();
            HeaderFieldList fieldList = new HeaderFieldList();

            HeaderFieldList.GetHeaderFieldList(0, responseHeader, fieldList);
            if (!StringUtils.IsEmpty(HeaderFieldList.GetHeaderFieldValue(responseHeader, fieldList, "set-cookie2")))
            {
                this.ProcessCookies(responseHeader, fieldList, "set-cookie2");
            }
            else
            {
                this.ProcessCookies(responseHeader, fieldList, "set-cookie");
            }
        }
Esempio n. 9
0
 protected virtual void InternalParseHeader(IList header, HeaderFieldList fieldList)
 {
     this.CacheControl     = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Cache-Control");
     this.Connection       = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Connection");
     this.ContentEncoding  = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Content-Encoding");
     this.ContentLanguage  = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Content-Language");
     this.ContentLength    = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Content-Length");
     this.ContentVersion   = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Content-Version");
     this.Date             = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Date");
     this.Expires          = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Expires");
     this.LastModified     = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Last-Modified");
     this.ProxyConnection  = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Proxy-Connection");
     this.TransferEncoding = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Transfer-Encoding");
     this.ParseContentType(header, fieldList);
 }
Esempio n. 10
0
        protected virtual HttpRequestItem CreateItem(IList header, HeaderFieldList fieldList)
        {
            string source = HeaderFieldList.GetHeaderFieldValue(header, fieldList, "Content-Disposition");

            if (
                !HeaderFieldList.GetHeaderFieldValueItem(source, "").ToLower(CultureInfo.InvariantCulture).Equals(
                    "form-data"))
            {
                return(Items.AddTextData(""));
            }
            string headerFieldValueItem = HeaderFieldList.GetHeaderFieldValueItem(source, "filename=");

            if (!StringUtils.IsEmpty(headerFieldValueItem))
            {
                return(Items.AddSubmitFile(headerFieldValueItem, ""));
            }
            return(Items.AddFormField(HeaderFieldList.GetHeaderFieldValueItem(source, "name="), string.Empty));
        }
Esempio n. 11
0
        private void PrepareRequestHeader(HttpTunnelStatus tunnelStatus, StringCollection requestHeader,
                                          Stream requestBody)
        {
            string str2;

            RemoveRequestLine(requestHeader);
            RemoveHeaderTrailer(requestHeader);
            string absolutePath = Url.AbsolutePath;

            if (IsUseProxy())
            {
                switch (tunnelStatus)
                {
                case HttpTunnelStatus.None:
                    absolutePath = Url.AbsoluteUri;
                    break;

                case HttpTunnelStatus.Connect:
                    absolutePath = string.Format("{0}:{1}", Url.Host, Url.Port);
                    break;
                }
            }
            if (StringUtils.IsEmpty(absolutePath))
            {
                absolutePath = "/";
            }
            requestHeader.Insert(0, string.Format("{0} {1} {2}", method, absolutePath, httpVersions[(int)HttpVersion]));
            var fieldList = new HeaderFieldList();

            HeaderFieldList.GetHeaderFieldList(0, requestHeader, fieldList);
            HeaderFieldList.RemoveHeaderField(requestHeader, fieldList, "Host");
            fieldList.Clear();
            HeaderFieldList.GetHeaderFieldList(0, requestHeader, fieldList);
            if (AllowCompression &&
                StringUtils.IsEmpty(HeaderFieldList.GetHeaderFieldValue(requestHeader, fieldList, "Accept-Encoding")))
            {
                HeaderFieldList.AddHeaderField(requestHeader, "Accept-Encoding", "gzip, deflate");
            }
            if (!StringUtils.IsEmpty(Url.Host))
            {
                str2 = Url.Host + GetPortIfNeed(Url.Port);
            }
            else
            {
                str2 = base.Server + GetPortIfNeed(base.Port);
            }
            HeaderFieldList.AddHeaderField(requestHeader, "Host", str2);
            if (StringUtils.IsEmpty(HeaderFieldList.GetHeaderFieldValue(requestHeader, fieldList, "User-Agent")))
            {
                HeaderFieldList.AddHeaderField(requestHeader, "User-Agent", UserAgent);
            }
            string val = HeaderFieldList.GetHeaderFieldValue(requestHeader, fieldList, "Content-Length");

            if (requestBody.Length == 0L)
            {
                HeaderFieldList.RemoveHeaderField(requestHeader, fieldList, "Content-Length");
                fieldList.Clear();
                HeaderFieldList.GetHeaderFieldList(0, requestHeader, fieldList);
                HeaderFieldList.RemoveHeaderField(requestHeader, fieldList, "Content-Type");
                fieldList.Clear();
                HeaderFieldList.GetHeaderFieldList(0, requestHeader, fieldList);
            }
            else if (StringUtils.IsEmpty(val) &&
                     ((tunnelStatus == HttpTunnelStatus.Connect) || (requestBody.Length > 0L)))
            {
                HeaderFieldList.AddHeaderField(requestHeader, "Content-Length", requestBody.Length.ToString());
            }
            if (!AllowCaching &&
                StringUtils.IsEmpty(HeaderFieldList.GetHeaderFieldValue(requestHeader, fieldList,
                                                                        cacheFields[(int)HttpVersion])))
            {
                HeaderFieldList.AddHeaderField(requestHeader, cacheFields[(int)HttpVersion], "no-cache");
            }
            if (KeepConnection &&
                StringUtils.IsEmpty(HeaderFieldList.GetHeaderFieldValue(requestHeader, fieldList,
                                                                        connFields[IsUseProxy() ? 1 : 0])))
            {
                HeaderFieldList.AddHeaderField(requestHeader, connFields[IsUseProxy() ? 1 : 0], "Keep-Alive");
            }
            if (AllowCookies)
            {
                Cookies.SetRequestCookies(requestHeader);
            }
            requestHeader.Add("");
        }