我想知道是否有人解释所列类别的差异
答案 0 :(得分:38)
他们做不同的事情。
WebRequest
是HttpWebRequest
的抽象基类 - 您无法直接使用它。它是其他*Request
类的基类(用于FTP,文件和其他类型的Web请求)。这些类都用于从Web获取资源(文件)。
还有一个WebClient
类 - 可能是最简单的用于从Internet检索资源的所有BCL类。
HttpRequest
表示对ASP.NET应用程序中的资源的请求 - 这是Request
的服务器端。
主要区别在于HttpWebRequest
是HTTP 客户端,而HttpRequest
是服务器端将在ASP.NET Web中使用应用
答案 1 :(得分:8)
HttpRequest
,与Oded already said完全不同 - 它在服务器端生成HTTP请求,因此客户端(例如HttpWebRequest
)可以读取它。
现在,在HttpWebRequest
和WebRequest
之间,虽然只是从另一个继承,但实际上,如果您使用 http://
,则没有区别创建请求。 似乎只是关于代码设计。
要使用WebRequest
,我们需要Create
,这将返回后代类。只要我们使用它的实例,它就会充当后代类的包装器。这是一个remark from the docs:
WebRequest
是.NET Framework用于从Internet访问数据的请求/响应模型的抽象基类。使用请求/响应模型的应用程序可以以协议无关的方式从Internet请求数据,其中应用程序使用WebRequest
类的实例,而特定于协议的后代类执行请求的详细信息(...)
因为
WebRequest
类是抽象类,所以WebRequest
实例在运行时的实际行为由Create
方法返回的后代类确定。有关默认值和例外的详细信息,请参阅后代类的文档,例如HttpWebRequest
和FileWebRequest
。
我现在才知道这一点,因为虽然也在寻找答案(1小时前我不知道),但我从forums at codeguru和MSDN doc remarks得到了这一点,这完全归功于{{ 3}}:
HttpWebRequest
类为WebRequest
中定义的属性和方法以及其他属性和方法提供支持,使用户可以使用HTTP直接与服务器进行交互。< / p>
这些评论继续(只选择某些与差异相关的那些):
不要使用
HttpWebRequest
构造函数。使用WebRequest.Create
方法初始化新的HttpWebRequest
个对象。如果统一资源标识符(URI)的方案是http://或https://,Create
将返回HttpWebRequest
个对象。
GetResponse
方法对RequestUri
属性中指定的资源发出同步请求,并返回包含HttpWebResponse
的内容响应。您可以使用BeginGetResponse
和EndGetResponse
方法向资源发出异步请求。
HttpWebRequest
公开发送到Internet资源的常见HTTP标头值作为属性,由方法设置或由系统设置;
然后有一张表google我不会在这里引用。