zoukankan      html  css  js  c++  java
  • HttpRequest 和HttpWebRequest的区别

    【1】问题:

    asp.NET C#  中HttpRequest 和HttpWebRequest的区别

    HttpRequest 与HttpWebRequest 有什么区别?

    网上中文的帖子很多,但是答案基本是拷贝MSDN的。

    这个比较扯淡,看了半天还是没看出区别。

    两者都是Http请求。

    我们先来看看网上的答案。

    【2】网上中文答案:

    System.Web.HttpRequest是封装浏览器对服务器的请求的,主要用在ASP.Net中,其中包括浏览器请求的网址,查询字符串数据或表单数据等等 

    而System.Net.HttpWebRequest则是用来简化网络请求的过程,从服务器上获取文件/结果的,譬如你可以在代码中用这个类冒充浏览器(设置一个UserAgent)来发请求,处理回应

    第一:他们不是父子关系。   
      第二:Syste.Net.HttpWebRequest   类是System.Net.WebRequest抽象类的一个子类,它是   .NET   Framework   的用于访问   Internet   数据的请求/响应模型的抽象基类。使用该请求/响应模型的应用程序可以用协议不可知的方式从   Internet   请求数据。在这种方式下,应用程序处理   WebRequest   类的实例,而协议特定的子类则执行请求的具体细节。   
      System.Net.HttpWebRequest   类和System.Net.FileWebRequest都继承了WebRequest   
      1、FileWebRequest   类为使用   file://   方案来请求本地文件的   URI   实现   WebRequest   抽象基类。   
      2、HttpWebRequest   类对   WebRequest   中定义的属性和方法提供支持,也对使用户能够直接与使用   HTTP   的服务器交互的附加属性和方法提供支持。   
      第三:System.Web.HttpRequest   类使   ASP.NET   能够读取客户端在   Web   请求期间发送的   HTTP   值。HttpRequest   类的方法和属性通过   HttpApplication、HttpContext、Page   和   UserControl   类的   Request   属性公开。   
        
      所以使用System.Web.HttpRequest类的时候其实都是利用HttpApplication、HttpContext、Page   和   UserControl   类的   Request   属性。而使用System.Net.HttpWebRequest类时是为了获得一个Uri资源。自己创建。 

    System.Web 命名空间提供使得可以进行浏览器与服务器通信的类和接口。此命名空间包括 HttpRequest 类(用于提供有关当前 HTTP 请求的广泛信息)、HttpResponse 类(用于管理对客户端的 HTTP 输出)以及 HttpServerUtility 类(用于提供对服务器端实用工具与进程的访问)。System.Web 还包括用于 Cookie 操作、文件传输、异常信息和输出缓存控制的类。 
    System.Net 命名空间为当前网络上使用的多种协议提供了简单的编程接口。WebRequest 和 WebResponse 类形成了所谓的可插接式协议的基础,可插接式协议是网络服务的一种实现,它使您能够开发出使用 Internet 资源的应用程序,而不必考虑各种不同协议的具体细节。

    【3】核心区别

         两者看起来都是Http请求,只是前者需要在ASP。NET上下文中使用。

    实际是不是这样的?

    其实这也只是表象,最根本的区别在于:

      • System.Web.HttpRequest:Incoming,进入请求,也就是客户端访问ASP.NET 网站进入时的请求。所以只能在ASP.NET应用程序上下文里使用。
      • System.Net.HttpWebRequest:OutGoing,外发请求,可以发出一个HTTP请求,它可以干的活,就比较多了,可以模拟一个独立的客户端,向网站发送请求。
  • 相关阅读:
    关于返回上一页功能
    Mybatis Update statement Date null
    SQLite reset password
    Bootstrap Validator使用特性,动态(Dynamic)添加的input的验证问题
    Eclipse使用Maven2的一次环境清理记录
    Server Tomcat v7.0 Server at localhost failed to start
    PowerShell一例
    Server Tomcat v7.0 Server at libra failed to start
    商标注册英语
    A glance for agile method
  • 原文地址:https://www.cnblogs.com/xiesong/p/6125539.html
Copyright © 2011-2022 走看看