HttpRequest,HttpWebRequest和WebRequest之间的区别

use*_*742 27 asp.net

我想知道是否有人解释所列类别的差异

Ode*_*ded 38

他们做不同的事情.

WebRequest是抽象基类HttpWebRequest- 你不能直接使用它.它是其他*Request类的基类(用于FTP,文件和其他类型的Web请求).这些类都用于从Web获取资源(文件).

还有一个WebClient类 - 可能是最简单的用于从Internet检索资源的所有BCL类.

HttpRequest,另一方面代表用于在ASP.NET应用程序的资源的请求-这是服务器侧的一个Request.

主要区别在于它HttpWebRequest是一个HTTP 客户端,并且HttpRequest是在ASP.NET Web应用程序中使用的服务器端.

  • 为什么*“你不能直接使用它”*?我用它所有的时间! (2认同)
  • @Cawas - 返回的类型不是`WebRequest`实例,而是继承类之一(比如`HttpWebRequest`,`FtpWebRequest`等...). (2认同)

cre*_*gox 8

HttpRequest正如Oded已经说过的那样,它完全不同 - 它在服务器端生成HTTP请求,因此客户端(例如HttpWebRequest)可以读取它.

现在,在HttpWebRequest和之间WebRequest,当一个人简单地从另一个继承时,在实践中,如果你 http://在创建请求时使用,则没有区别.似乎只是代码设计.

要使用WebRequest我们需要的Create,它将返回一个后代类.只要我们使用它的实例,它就会充当后代类的包装器.以下是文档中评论:

WebRequest是.NET Framework用于从Internet访问数据的请求/响应模型的抽象基类.使用请求/响应模型的应用程序可以以协议无关的方式从Internet请求数据,其中应用程序使用WebRequest类的实例,而特定于协议的后代类执行请求的详细信息.

(......)

因为WebRequest类是抽象类,所以WebRequest实例在运行时的实际行为由Create方法返回的后代类确定.有关默认值和异常的详细信息,请参阅后代类的文档,例如HttpWebRequestFileWebRequest.

放弃

我现在才知道这个,因为,虽然也在寻找答案(我不知道1小时前),我从codeguruMSDN doc评论的论坛得到了这个,这一切都归功于google:

HttpWebRequest类提供中定义的属性和方法支持WebRequest 以及用于附加属性和方法,使用户直接使用HTTP服务器进行交互.

和言论下去(选择只是那些一些相关性的差别):

不要使用HttpWebRequest构造函数.使用该WebRequest.Create方法初始化新HttpWebRequest对象.如果统一资源标识符(URI)的方案是http://或https://,则Create返回一个HttpWebRequest对象.

GetResponse方法对属性中指定的资源发出同步请求,RequestUri并返回HttpWebResponse包含响应的资源.您可以使用和方法向资源发出异步请求.BeginGetResponseEndGetResponse

HttpWebRequest公开发送到Internet资源的公共HTTP标头值作为属性,由方法设置或由系统设置;

那里有一张桌子,我不会在这里引用.