日期:2014-05-18  浏览次数:20902 次

关于 webReqeust、HttpWebRequest
现在做一个 抓取页面 的程序,
用了两种方式 实现,webReqeust、HttpWebRequest

1.webReqeust方式
string PageUrl = url.text;
System.Net.WebRequest request = System.Net.WebRequest.Create(PageUrl);
request.Timeout=1000 * 10;
System.Net.WebResponse response = request.GetResponse();
System.IO.Stream resStream = response.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(resStream, System.Text.Encoding.UTF8);
string info = sr.ReadToEnd();
resStream.Close();
sr.Close();

2.HttpWebRequest方式
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(PageUrl);
//声明一个HttpWebRequest请求  
request.Timeout = 1000 * 10; //设置连接超时时间  
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("UTF-8");
StreamReader streamReader = new StreamReader(streamReceive, encoding);
a = streamReader.ReadToEnd();  

这两种写法 看起来 是一样的,但是实际的效率上 是不是一样

------解决方案--------------------
差别不大,都一样。
------解决方案--------------------
WebRequest 是 .NET Framework 的请求/响应模型的 abstract 基类,用于访问 Internet 数据。使用该请求/响应模型的应用程序可以用协议不可知的方式从 Internet 请求数据,在这种方式下,应用程序处理 WebRequest 类的实例,而协议特定的子类则执行请求的具体细节。

请求从应用程序发送到某个特定的 URI,如服务器上的网页。URI 从一个为应用程序注册的 WebRequest 子代列表中确定要创建的适当子类。注册 WebRequest 子代通常是为了处理某个特定的协议(如 HTTP 或 FTP),但是也可以注册它以处理对特定服务器或服务器上的路径的请求。


------解决方案--------------------
别再沉了,我来顶起。

貌似是没什么区别吧
------解决方案--------------------
HttpWebRequest 是http协议请求。
WebRequest 是前者的父类
------解决方案--------------------
都是一样的。
WebRequest 类是一个抽象类, WebRequest 实例在运行时的实际行为由 WebRequest.Create 方法所返回的子类确定。
如 HttpWebRequest 和 FileWebRequest。