private string ReadUrlContent(ref string url, bool checkredirect, bool checkHtmlRedurect,int timeoutsecond) { string content = String.Empty; try { Uri uri = new Uri(url); gRequest = QuickWebRequest.Create(uri, null, gRequest, false); gResponse = gRequest.GetResponse(timeoutsecond); if (checkredirect) { if (gResponse.RedirectUri != null && gResponse.RedirectUri.AbsoluteUri != url) { return ReadUrlContent(gResponse.RedirectUri.AbsoluteUri, false, checkHtmlRedurect); } } byte[] bytes = gResponse.ReadResponse(); if (bytes == null) { return null; } System.Text.Encoding charset = HttpUtils.DetectCharset(gResponse, bytes); if (charset == null) { //默认使用GB2312 charset = System.Text.Encoding.GetEncoding("GB2312"); } // 使用指定的编码 if (!string.IsNullOrEmpty(Encoding)) { charset = System.Text.Encoding.GetEncoding(Encoding); } //完成到UTF8的编码转换 if (charset != System.Text.Encoding.UTF8) { bytes = System.Text.Encoding.Convert(charset, System.Text.Encoding.UTF8, bytes); charset = System.Text.Encoding.UTF8; } content = charset.GetString(bytes); //检查一次Html重定向 if (checkHtmlRedurect) { System.Text.RegularExpressions.Regex redirectRegex = new System.Text.RegularExpressions.Regex("<META\\s+HTTP-EQUIV\\s*=\\s*[\"]*Refresh[\"]*\\s+CONTENT=[\"\\s]*\\d+\\s*[;]\\s*URL=(?<match>.*?)[\\s\"]*>", System.Text.RegularExpressions.RegexOptions.Singleline | System.Text.RegularExpressions.RegexOptions.IgnoreCase); System.Text.RegularExpressions.Match match = redirectRegex.Match(content); if (match.Success) { if (!string.IsNullOrEmpty(match.Groups["match"].Value) && match.Groups["match"].Value != url) { url = match.Groups["match"].Value; return ReadUrlContent(url, checkredirect, false); } } } } catch { //暂时不做处理。 } finally { gResponse.Close(); } return content; }
private string ReadUrlContent(ref string url, bool checkredirect, bool checkHtmlRedurect, int timeoutsecond) { string content = String.Empty; try { Uri uri = new Uri(url); gRequest = QuickWebRequest.Create(uri, null, gRequest, false); gResponse = gRequest.GetResponse(timeoutsecond); if (checkredirect) { if (gResponse.RedirectUri != null && gResponse.RedirectUri.AbsoluteUri != url) { return(ReadUrlContent(gResponse.RedirectUri.AbsoluteUri, false, checkHtmlRedurect)); } } byte[] bytes = gResponse.ReadResponse(); if (bytes == null) { return(null); } System.Text.Encoding charset = HttpUtils.DetectCharset(gResponse, bytes); if (charset == null) { //默认使用GB2312 charset = System.Text.Encoding.GetEncoding("GB2312"); } // 使用指定的编码 if (!string.IsNullOrEmpty(Encoding)) { charset = System.Text.Encoding.GetEncoding(Encoding); } //完成到UTF8的编码转换 if (charset != System.Text.Encoding.UTF8) { bytes = System.Text.Encoding.Convert(charset, System.Text.Encoding.UTF8, bytes); charset = System.Text.Encoding.UTF8; } content = charset.GetString(bytes); //检查一次Html重定向 if (checkHtmlRedurect) { System.Text.RegularExpressions.Regex redirectRegex = new System.Text.RegularExpressions.Regex("<META\\s+HTTP-EQUIV\\s*=\\s*[\"]*Refresh[\"]*\\s+CONTENT=[\"\\s]*\\d+\\s*[;]\\s*URL=(?<match>.*?)[\\s\"]*>", System.Text.RegularExpressions.RegexOptions.Singleline | System.Text.RegularExpressions.RegexOptions.IgnoreCase); System.Text.RegularExpressions.Match match = redirectRegex.Match(content); if (match.Success) { if (!string.IsNullOrEmpty(match.Groups["match"].Value) && match.Groups["match"].Value != url) { url = match.Groups["match"].Value; return(ReadUrlContent(url, checkredirect, false)); } } } } catch { //暂时不做处理。 } finally { gResponse.Close(); } return(content); }