【发布时间】:2012-01-02 19:58:11
【问题描述】:
我想知道是否有人解释列出的类的区别
【问题讨论】:
-
两个相关问题:stackoverflow.com/questions/4457791/… 和 stackoverflow.com/questions/896253/… 都有不同的答案,对我来说,这里没有回答主要问题。
标签: asp.net
我想知道是否有人解释列出的类的区别
【问题讨论】:
标签: asp.net
HttpRequest 和 Oded already said 完全不同 - 它在服务器端生成 HTTP 请求,以便客户端(例如 HttpWebRequest)可以读取它。
现在,在HttpWebRequest 和WebRequest 之间,虽然其中一个只是从另一个继承而来,但在实践中,如果您在创建请求时使用http:// 没有区别。 似乎一切都只是代码设计。
要使用WebRequest,我们需要Create,它将返回一个后代类。只要我们使用它的实例,它就会充当后代类的包装器。这是remark from the docs:
WebRequest是 .NET Framework 用于从 Internet 访问数据的请求/响应模型的 abstract 基类。使用请求/响应模型的应用程序可以以与协议无关的方式从 Internet 请求数据,其中应用程序使用WebRequest类的实例,而特定于协议的后代类执行请求的详细信息。(...)
由于
WebRequest类是一个抽象类,WebRequest实例在运行时的实际行为由Create方法返回的后代类决定。有关默认值和异常的详细信息,请参阅后代类的文档,例如HttpWebRequest和FileWebRequest。
我现在才知道这一点,因为在寻找答案的同时(我在 1 小时前还不知道),我从 forums at codeguru 和 MSDN doc remarks 得到了这个,这一切都感谢google:
HttpWebRequest类支持WebRequest中定义的属性和方法以及其他属性和方法,使用户能够使用 HTTP 直接与服务器交互。
然后评论继续(仅选择与差异相关的一些):
不要使用
HttpWebRequest构造函数。使用WebRequest.Create方法初始化新的HttpWebRequest对象。如果统一资源标识符 (URI) 的方案是 http:// 或 https://,Create将返回一个HttpWebRequest对象。
GetResponse方法向RequestUri属性中指定的资源发出同步 请求,并返回包含响应的HttpWebResponse。您可以使用BeginGetResponse和EndGetResponse方法向资源发出异步请求。
HttpWebRequest将发送到 Internet 资源的常见 HTTP 标头值公开为属性、由方法设置或由系统设置;
然后有个表there这里就不引用了。
【讨论】:
他们做不同的事情。
WebRequest 是HttpWebRequest 的抽象基类——你不能直接使用它。它是其他*Request 类(用于FTP、文件和其他类型的Web 请求)的基类。这些类都用于从网络获取资源(文件)。
还有一个WebClient 类 - 可能是所有旨在从 Internet 检索资源的 BCL 类中最简单的一个。
HttpRequest 表示对 ASP.NET 应用程序中资源的请求 - 这是Request 的服务器端。
主要区别在于HttpWebRequest 是HTTP 客户端,而HttpRequest 是服务器 端,用于ASP.NET Web 应用程序。 p>
【讨论】:
WebRequest?
WebRequest 实例,而是继承类之一(比如HttpWebRequest、FtpWebRequest 等...)。