【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请求,它可以干的活,就比较多了,可以模拟一个独立的客户端,向网站发送请求。

HttpRequest 和HttpWebRequest的区别的更多相关文章

  1. .net学习笔记----HttpRequest,WebRequest,HttpWebRequest区别

    WebRequest是一个虚类/基类,HttpWebRequest是WebRequest的具体实现 HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所 ...

  2. WebRequest/HttpWebRequest/HttpRequest/WebClient/HttpClient的区别

    1.WebRequest和HttpWebRequest WebRequest 的命名空间是: System.Net ,它是HttpWebRequest的抽象父类(还有其他子类如FileWebReque ...

  3. C#,WebRequest类、HttpWebRequest类与HttpRequest类的区别

    C#,WebRequest类和HttpWebRequest类的区别? httpWebRequest是webRequest的子类,httpWebRequest是基于http协议的 . HttpWebRe ...

  4. Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口

    1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...

  5. HttpRequest,WebRequest,HttpWebRequest,WebClient,HttpClient 之间的区别

    HttpRequest,WebRequest,HttpWebRequest,WebClient,HttpClient 今天我们来聊一下他们之间的关系与区别. HttpRequest 类 .NET Fr ...

  6. HttpWebRequest类与HttpRequest类的区别

    HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所有信息.而HttpWebRequest用于客户端,拼接请求的HTTP报文并发送等. HttpWebR ...

  7. HttpWebRequest和WebClient的区别

     HttpWebRequest和WebClient的区别(From Linzheng): 1,HttpWebRequest是个抽象类,所以无法new的,需要调用HttpWebRequest.Creat ...

  8. $Django 虚拟环境,2.0、1.0路由层区别,Httprequest对象,视图层(fbv,cbv),文件上传

    1 虚拟环境:解决问题同一台机器上可以运行不同版本的django,  1 用pychanrm创建--->files-->newproject--->选择虚拟环境  2 setting ...

  9. WebClient, HttpClient, HttpWebRequest ,RestSharp之间的区别与抉择

    NETCore提供了三种不同类型用于生产的REST API: HttpWebRequest;WebClient;HttpClient,开源社区创建了另一个名为RestSharp的库.如此多的http库 ...

随机推荐

  1. tomcat报错:This is very likely to create a memory leak问题解决

    tomcat memory leak解决方案 这种问题在开发中经常会碰到的,看看前辈的总结经验 Tomcat内存溢出的原因  在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一 ...

  2. android中数据存储

    android中数据存储     Android 中存储数据的方式有五种:SQLite数据库.文件存储.内容提供者.网络.SharedPreferences(Key----value)五种存储方式. ...

  3. [TypeScript] Configuring a New TypeScript Project

    This lesson walks you through creating your first .tsconfig configuration file which will tell the T ...

  4. android之TabWidget选项卡

    1 概览 l  TabWidget与TabHost.tab组件一般包括TabHost和TabWidget.FrameLayout,且TabWidget.FrameLayout属于TabHost. l  ...

  5. GO的跨平台数扰类型

    基本数据类型的包装: 1.跨平台,用于移植 2.不同的框架类型包装的类型(MFC ,WIN32SDK,C) 3.基本数据类型的组装成的结构体 4.宏定义 数字类型 Go 也有基于架构的类型,例如:in ...

  6. The content of element type "beans" must match "(description?,(import|alias|bean)*)

    The content of element type "beans" must match "(description?,(import|alias|bean)*) - ...

  7. java String的比较,BOX装箱拆箱,以及面向对象的小代码

    package cn.hncu.day2; public class StringDemo { public static void main(String[] args) { String str1 ...

  8. hdu2058java

    The sum problem Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  9. hdu2035java

    人见人爱A^B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  10. JavaScript 应用开发 #3:应用的主视图

    目前为止,我们已经在应用里面,创建了表示数据的模型,表示数据列表的集合,组织模型显示的视图与模板.下面, 我们要想办法,去把模型的列表显示在应用的界面上.这样我们就可以再去为应用创建一个主要的视图,用 ...