asp.net HttpWebRequest自动识别网页编码
asp.net HttpWebRequest自动识别网页编码
发布时间:2016-12-29 来源:查字典编辑
摘要:复制代码代码如下:staticstringGetEncoding(stringurl){HttpWebRequestrequest=null...

复制代码 代码如下:

static string GetEncoding(string url)

{

HttpWebRequest request = null;

HttpWebResponse response = null;

StreamReader reader = null;

try

{

request = (HttpWebRequest)WebRequest.Create(url);

request.Timeout = 20000;

request.AllowAutoRedirect = false;

response = (HttpWebResponse)request.GetResponse();

if (response.StatusCode == HttpStatusCode.OK && response.ContentLength < 1024 * 1024)

{

if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))

reader = new StreamReader(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress));

else

reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII);

string html = reader.ReadToEnd();

Regex reg_charset = new Regex(@"charsetbs*=s*(?<charset>[^""]*)");

if (reg_charset.IsMatch(html))

{

return reg_charset.Match(html).Groups["charset"].Value;

}

else if (response.CharacterSet != string.Empty)

{

return response.CharacterSet;

}

else

return Encoding.Default.BodyName;

}

}

catch

{

}

finally

{

if (response != null)

{

response.Close();

response = null;

}

if (reader != null)

reader.Close();

if (request != null)

request = null;

}

return Encoding.Default.BodyName;

}

/// <summary>

/// 获取源代码

/// </summary>

/// <param name="url"></param>

/// <returns></returns>

static string GetHtml(string url, Encoding encoding)

{

HttpWebRequest request = null;

HttpWebResponse response = null;

StreamReader reader = null;

try

{

request = (HttpWebRequest)WebRequest.Create(url);

request.Timeout = 20000;

request.AllowAutoRedirect = false;

response = (HttpWebResponse)request.GetResponse();

if (response.StatusCode == HttpStatusCode.OK && response.ContentLength < 1024 * 1024)

{

if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))

reader = new StreamReader(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress), encoding);

else

reader = new StreamReader(response.GetResponseStream(), encoding);

string html = reader.ReadToEnd();

return html;

}

}

catch

{

}

finally

{

if (response != null)

{

response.Close();

response = null;

}

if (reader != null)

reader.Close();

if (request != null)

request = null;

}

return string.Empty;

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类