一、HttpRequest 成员
公共构造函数
名称 |
说明 |
HttpRequest |
初始化 HttpRequest 对象。 |
公共属性
名称 |
说明 |
AcceptTypes |
获取客户端支持的 MIME 接受类型的字符串数组。 |
AnonymousID |
获取该用户的匿名标识符(如果存在)。 |
ApplicationPath |
获取服务器上 ASP.NET 应用程序的虚拟应用程序根路径。 |
AppRelativeCurrentExecutionFilePath |
获取应用程序根的虚拟路径,并通过对应用程序根使用波形符 (~) 表示法(例如,以“~/page.aspx”的形式)使该路径成为相对路径。 |
Browser |
获取或设置有关正在请求的客户端的浏览器功能的信息。 |
ClientCertificate |
获取当前请求的客户端安全证书。 |
ContentEncoding |
获取或设置实体主体的字符集。 |
ContentLength |
指定客户端发送的内容长度(以字节计)。 |
ContentType |
获取或设置传入请求的 MIME 内容类型。 |
Cookies |
获取客户端发送的 cookie 的集合。 |
CurrentExecutionFilePath |
获取当前请求的虚拟路径。 |
FilePath |
获取当前请求的虚拟路径。 |
Files |
获取采用多部分 MIME 格式的由客户端上载的文件的集合。 |
Filter |
获取或设置在读取当前输入流时要使用的筛选器。 |
Form |
获取窗体变量集合。 |
Headers |
获取 HTTP 头集合。 |
HttpMethod |
获取客户端使用的 HTTP 数据传输方法(如 GET、POST 或 HEAD)。 |
InputStream |
获取传入的 HTTP 实体主体的内容。 |
IsAuthenticated |
获取一个值,该值指示是否验证了请求。 |
IsLocal |
获取一个值,该值指示该请求是否来自本地计算机。 |
IsSecureConnection |
获取一个值,该值指示 HTTP 连接是否使用安全套接字(即 HTTPS)。 |
Item |
从 Cookies、Form、QueryString 或 ServerVariables 集合中获取指定的对象。 |
LogonUserIdentity |
获取当前用户的 WindowsIdentity 类型。 |
Params |
获取 QueryString、Form、ServerVariables 和 Cookies 项的组合集合。 |
Path |
获取当前请求的虚拟路径。 |
PathInfo |
获取具有 URL 扩展名的资源的附加路径信息。 |
PhysicalApplicationPath |
获取当前正在执行的服务器应用程序的根目录的物理文件系统路径。 |
PhysicalPath |
获取与请求的 URL 相对应的物理文件系统路径。 |
QueryString |
获取 HTTP 查询字符串变量集合。 |
RawUrl |
获取当前请求的原始 URL。 |
RequestType |
获取或设置客户端使用的 HTTP 数据传输方法(GET 或 POST)。 |
ServerVariables |
获取 Web 服务器变量的集合。 |
TotalBytes |
获取当前输入流中的字节数。 |
Url |
获取有关当前请求的 URL 的信息。 |
UrlReferrer |
获取有关客户端上次请求的 URL 的信息,该请求链接到当前的 URL。 |
UserAgent |
获取客户端浏览器的原始用户代理信息。 |
UserHostAddress |
获取远程客户端的 IP 主机地址。 |
UserHostName |
获取远程客户端的 DNS 名称。 |
UserLanguages |
获取客户端语言首选项的排序字符串数组。 |
公共方法
名称 |
说明 |
BinaryRead |
执行对当前输入流进行指定字节数的二进制读取。 |
Equals |
已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。) |
GetHashCode |
用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。) |
GetType |
获取当前实例的 Type。 (从 Object 继承。) |
MapImageCoordinates |
将传入图像字段窗体参数映射为适当的 x 坐标值和 y 坐标值。 |
MapPath |
已重载。 为当前请求将请求的 URL 中的虚拟路径映射到服务器上的物理路径。 |
ReferenceEquals |
确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。) |
SaveAs |
将 HTTP 请求保存到磁盘。 |
ToString |
返回表示当前 Object 的 String。 (从 Object 继承。) |
ValidateInput |
对通过 Cookies 、Form 和 QueryString 属性访问的集合进行验证。 |
受保护的方法
名称 |
说明 |
Finalize |
允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。 (从Object 继承。) |
MemberwiseClone |
创建当前 Object 的浅表副本。 (从 Object 继承。) |
二、Request对象三种取得数据的方法
Request对象功能是从客户端得到数据,常用的三种取得数据的方法是:Request.Form、Request.QueryString,Request。其第三种是前两种的一个缩写,可以取代前两种情况。而前两种主要对应的Form提交时的两种不同的提交方法:分别是Post方法和Get方法。
Request 对象的属性和方法比较多,常用的几个为:UserAgent 传回客户端浏览器的版本信息,UserHostAddress 传回远方客户端机器的主机IP 地址,UserHostName传回远方客户端机器的DNS 名称,PhysicalApplicationPath 传回目前请求网页在Server端的真实路径。
1、从浏览器获取数据
利用Request方法,可以读取其他页面提交过来的数据。提交的数据有两种形式:一种是通过Form表单提交过来,另一种是通过超级链接后面的参数提交过来,两种方式都可以利用Request对象读取。
<%@ Page Language="C#"%>
<%
string strUserName = Request["Name"];
string strUserLove = Request["Love"];
%>
姓名:<%=strUserName%>
爱好:<%=strUserLove%>
<form action="" method="post">
<P>姓名:<input type="TEXT" size="20" name="Name"></P>
<P>兴趣:<input type="TEXT" size="20" name="Love"></P>
<P><input type="submit" value="提 交"></P>
</form>
2、得到客户端的信息
利用Request对象内置的属性,可以得到一些客户端的信息,比如客户端浏览器版本和客户端地址等等
<%@ Page Language="C#"%>
客户端浏览器:<%=Request.UserAgent %>
客户端IP地址:<%=Request.UserHostAddress %>
当前文件服务端物理路径:<%=Request.PhysicalApplicationPath %>
三、Request对象包括:
报头
客户端的基本信息(如浏览器类型、版本号、用户所用的语言及编码方式等)
请求方法(Post或Get)
参数名
参数值
Request对象的调用方法:
Request.Collection["Variable"]
其中,Collection有QueryString、Form、Cookies、ServerVariables四种集合。Collection可以省略,如用Request["Variable"]调用,但这样会降低效率。
以下是这四种集合:
1、QueryString集合
QueryString集合收集的信息来自于请求Url中“?”号后面的数据,这些数据通常称为“Url附加信息”:
http://www.aspcn.com/show.asp?id=111
在此Url中,QueryString收集到的信息是“Show.asp?”后的附加数据“id=111”。
此时,取得参数id的参数值的语句是:
Request.QueryString["id"]
QueryString集合主要用于收集Http协议中的Get请求发送的数据,如果一个请求事件中被请求的程序Url中出现“?”号后的数据,则表示此次请求方式为Get。最常用的超链接,就是通过Get发送请求。也可以通过Form发送Get请求。
那么,在show.asp页面中,就可以用Request.QueryString["id"]获得id的参数值。
2、Form集合
Form集合与QueryString类似,但它用于收集Post方法发送的请求数据(Get方法一般只能传递256字节的数据,而Post可以达到2M)。
Post请求必须由Form来发送。那么,在show.asp页面中,就可以用Request.Form["id"]获得id的参数值。
3、Cookies集合
4、ServerVariable集合
ServerVariable(环境变量)集合中包含了服务器和客户端的系统信息。
---客户端:
(1)获取客户端浏览器版本号: Request.ServerVariable["HTTP_USER_AGENT"]
(2)获取客户端IP地址: Request.ServerVariable["REMOTE_ADDR"]
(3)获取客户端所使用的语言: HTTP_ACCEPT_LANGUAGE
(4)获取请求的方法: REQUEST_METHOD
(5)获取请求信息的内容的总符数: CONTENT_LENGTH
(6)获取请求信息的类型 CONTENT_TYPE
(7)获取URL的附加信息: QUERY_STRING
(8)获取网关接口: GATEWAY_INTERFACE
---服务器:
(1)获取服务器的IP地址: Request.ServerVariable["LOCAL_ADDR"]
(2)获取服务器的主机名: Request.ServerVariable["SERVER_NAME"]
(3)获取当前执行程序的虚拟目录: PATH_INFO
(4)获取当前执行程序的绝对路径: PATH_TRANSLATED
(5)获取当前程序的文件名(包含虚拟路径): SCRIPT_NAME
(6)获取服务器接受请求的端口: SERVER_PORT
(7)获取服务器遵从的协议及版本号: SERVER_PROTOCAL
Browser对象
ASP.net的Browser对象是通过调用Request的Browser属性直接获得的,它可以获得浏览器的更深入的信息
检测浏览器的类型: Request.Brower.Brower 显示结果,例如 IE
检测浏览器的版本: Requet.Brower.Version 显示结果,例如 6.0b
检测浏览器是否支持ActiveX控件: ActiveXControls
检测浏览器是否支持Cookies: Cookies
检测浏览器是否支持VBScript: VBSCript
其它Request属性、方法:
* FilePath 取得当前请求的文件路径,例: String filePath = Request.FilePath;
* HttpMethod 取得当前请求的方法
* Files
* Params 获得 QueryString + Form + ServerVariable + Cookies 的集合。
* TotalBytes 请求内容的大小
* Url 获得Url信息,例:
HttpUrl objUrl = Request.URL;
string sPort = objUrl.Port;
string sProtocol = objUrl.Protocol;
* UserHostAddress(用户IP)、UserHostName、UserLanguages
四、Request获取url信息的各种方法比较
在ASP.NET编程中经常需要用Request获取url的有关信息,Request中有多种方法获取url信息,但我经常忘了各种方法的具体作用,今天我就写了个测试程序,将各种方法得到的结果列出来,以后用时直接参考一下就行了。
测试的url地址是[url]http://www.test.com/testweb/default.aspx[/url], 结果如下:
Request.ApplicationPath: /testweb
Request.CurrentExecutionFilePath: /testweb/default.aspx
Request.FilePath: /testweb/default.aspx
Request.Path: /testweb/default.aspx
Request.PathInfo:
Request.PhysicalApplicationPath: E:/WWW/testweb/ 获取当前正在执行的服务器应用程序的根目录的物理文件系统路径。
Request.PhysicalPath: E:/WWW/testweb/default.aspx
Request.RawUrl: /testweb/default.aspx
Request.Url.AbsolutePath: /testweb/default.aspx
Request.Url.AbsoluteUri: [url]http://www.test.com/testweb/default.aspx[/url]
Request.Url.Host: [url]www.test.com[/url]
Request.Url.LocalPath: /testweb/default.aspx
六、获取客户端信息
Response.Write("客户端计算机名:" + Request.UserHostName + "<BR />");
Response.Write("客户端IP:" + Request.UserHostAddress + "<BR />");
Response.Write("浏览器:" + Request.Browser.Browser + "<BR />");
Response.Write("浏览器版本:" + Request.Browser.Version + "<BR />");
Response.Write("浏览器类型:" + Request.Browser.Type + "<BR />");
Response.Write("客户端操作系统:" + Request.Browser.Platform + "<BR />");
Response.Write("是否支持Java:" + Request.Browser.JavaApplets + "<BR />");
Response.Write("是否支持框架网页:" + Request.Browser.Frames + "<BR />");
Response.Write("是否支持Cookie:" + Request.Browser.Cookies + "<BR />");
Response.Write("客户端.NET Framework版本:" + Request.Browser.ClrVersion + "<BR />");
Response.Write("JScript版本:" + Request.Browser.JScriptVersion + "<BR />");
Response.Write("请求的虚拟路径:" + Request.Path + "<BR />");
//Response.Write("title:" + Request.He + "<BR />");
for(int i=0;i<Request.Headers.Count;i++){
Response.Write(Request.Headers.Keys[i]+":" + Request.Headers[Request.Headers.Keys[i]]+ "<BR />");
}
Response.Write("请求的物理路径:" + Request.PhysicalPath + "<BR />");
Response.Write("浏览器类型和版本:" + Request.ServerVariables["HTTP_USER_AGENT"] + "<BR />");
Response.Write("用户的IP地址:" + Request.ServerVariables["REMOTE_ADDR"] + "<BR />");
Response.Write("请求的方法:" + Request.ServerVariables["REQUEST_METHOD"] + "<BR />");
Response.Write("服务器的IP地址:" + Request.ServerVariables["LOCAL_ADDR"] + "<BR />");