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请求,它可以干的活,就比较多了,可以模拟一个独立的客户端,向网站发送请求。
  • 相关阅读:
    day 6 敌机
    day 11 绘制轮廓
    day 10 形态学处理 膨胀
    day 5 飞机发射子弹 难点??
    激活Navicat?如何注册Navicat?
    Gradle DSL method found: ‘android()’错误
    腾讯sdk配置
    Android模拟器报"Failed To Allocate memory 8"错误的解决办法
    文件上传工具swfupload[转]
    35个jquery技巧[转]
  • 原文地址:https://www.cnblogs.com/xiesong/p/6125539.html
Copyright © 2011-2022 走看看