获取网页源码可以通过WebRequest类和WebResponse类。
1.WebRequest类
WebRequest类是.Net Framework的请求/响应模型的abstract基类,用于访问Internet数据。使用请求/响应模型的应用程序可以用协议不可知的方式从Internet请求数据。此类在System.Net命名空间下。Request类的常用方法:
方法 | 说明 |
---|---|
Abort | 终止请求 |
BeginGetResponse | 当在子类 中被重写时,开始对Internet资源的异步请求 |
Create | 初始化新的WebRequest |
CreateDefault | 为指定的URI方案初始化新的WebRequest实例 |
EndGetRequestStream | 当在子类中重写时,返回用于将数据写入Internet资源的Stream(异步访问) |
GetResponse | 当在子类中被重写时,返回对Internet请求的响应 |
GetSystemWebProxy | 返回当前模拟用户的Internet Explorer设置中配置的代理 |
RegisterPrefix | 为指定的URI注册WebRequest子代理 |
语法:public static WebRequest Create (Uri requestUri)
说明:requestUri表示包含请求资源的URI的Uri,返回值为指定的URI方案的WebRequest子代理。
(2)GetResponse方法:当在子类中被重写时,返回对Internet请求的响应。
语法:public virtual WebResponse GetResponse ()
说明:返回值包含对Internet请求的响应的WebResponse。
2.WebResponse类
WebResponse类提供来自统一资源标识符(URI)的响应,是一个abstract类。不能直接创建WebResponse对象,而需要通过对WebRequest实例调用GetResponse方法来进行创建。WebResponse类有一个GetResponseStream方法,当在子类中重写时,此方法从Internet资源返回数据流。
语法:public virtual Stream GetResponseStream ()
说明:返回值是用于从Internet资源中读取数据的Stream类的实例。
代码示例如下:
private void FrmSource_Load(object sender, EventArgs e)
{
if (!url.StartsWith("http://") || url + "" == "" || url == "about:blank")
{
return;
}
WebRequest request = WebRequest.Create(url); //向指定地址的Internet发出请求
WebResponse response = request.GetResponse(); //获取响应的实例
//创建一个文件读取器
StreamReader myReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
this.rtxtShowSourceFile.Text = myReader.ReadToEnd();
response.Close(); //关闭文件流
}