首先介绍一下通过发送Http请求来获取某个网页的HTML响应的方法,代码如下:
public string GetWebPageSource(string url) { Uri uri = new Uri(url); HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri); HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); httpWebRequest.Method = "Get"; httpWebRequest.KeepAlive = false;StreamReader reader = new StreamReader(httpWebResponse.GetResponseStream(), System.Text.Encoding.UTF8); return reader.ReadToEnd();
}
使用此方法,向某个服务器发送了HTTP请求,并获得了该服务器对这个请求的响应。这个服务器也可以是本地服务器。这个功能可以用在做代理服务器,或者做浏览器的时候。
有另外一种需求,比如要将本服务器上的某个页面,做为HTML邮件发送出去,这时候,要获取本服务器上的页面HTML源码。
当然也可以尝试使用上面的方法,但是,总觉得有些欠妥,因为,对服务器来说,我只需要将属于我的ASPX页面,解析成HTML发送出去就可以了,干嘛要先对我自己发送一个HTTP请求呢?另外,如果这个页面是需要登录的话,那么用上面的方法,返回的HTML会变成拒绝访问,要求登录的那个页面的HTML源码。
其实,在这种情况下,最适合的方法,是使用 Server.Execute()。完整代码如下:
public string GetPageHtmlSource(string path) { StringWriter stringWriter = new StringWriter(); HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter); Server.Execute(path, htmlWriter); string html = stringWriter.GetStringBuilder().ToString(); return html; }