private HttpResult GetHttpRequestData(HttpItem objhttpitem) { HttpResult result = new HttpResult(); try { using (response = (HttpWebResponse)request.GetResponse()) { result.Header = response.Headers; if (response.Cookies != null) { result.CookieCollection = response.Cookies; } if (response.Headers["set-cookie"] != null) { result.Cookie = response.Headers["set-cookie"]; } MemoryStream _stream = new MemoryStream(); if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase)) { _stream = GetMemoryStream(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress)); } else { _stream = GetMemoryStream(response.GetResponseStream()); } byte[] RawResponse = _stream.ToArray(); if (objhttpitem.ResultType == ResultType.Byte) { result.ResultByte = RawResponse; } if (encoding == null) { string temp = Encoding.Default.GetString(RawResponse, 0, RawResponse.Length); //<meta(.*?)charset([\s]?)=[^>](.*?)> Match meta = Regex.Match(temp, "<meta([^<]*)charset=([^<]*)[\"']", RegexOptions.IgnoreCase | RegexOptions.Multiline); string charter = (meta.Groups.Count > 2) ? meta.Groups[2].Value : string.Empty; charter = charter.Replace("\"", string.Empty).Replace("'", string.Empty).Replace(";", string.Empty); if (charter.Length > 0) { charter = charter.ToLower().Replace("iso-8859-1", "gbk"); encoding = Encoding.GetEncoding(charter); } else { if (response.CharacterSet.ToLower().Trim() == "iso-8859-1") { encoding = Encoding.GetEncoding("gbk"); } else { if (string.IsNullOrEmpty(response.CharacterSet.Trim())) { encoding = Encoding.UTF8; } else { encoding = Encoding.GetEncoding(response.CharacterSet); } } } } result.Html = encoding.GetString(RawResponse); _stream.Close(); } } catch (WebException ex) { result.Html = "String Error"; response = (HttpWebResponse)ex.Response; } if (objhttpitem.IsToLower) { result.Html = result.Html.ToLower(); } return(result); }
public HttpResult GetHtml(HttpItem objhttpItem) { SetRequest(objhttpItem); return(GetHttpRequestData(objhttpItem)); }