您的位置:首页 > 编程语言 > ASP

ASP.NET使用Request获取来源网址URL所有参数信息

2011-11-11 17:28 781 查看
ASP.NET使用Request获取来源网址URL参数

Request对象功能是从客户端得到数据,常用的三种取得数据的方法是:Request.Form、Request.QueryString,Request。其第三种是前两种的一个缩写,可以取代前两种情况。而前两种主要对应的Form提交时的两种不同的提交方法:分别是Post方法和Get方法。

Request 对象的属性和方法比较多,常用的几个为:UserAgent 传回客户端浏览器的版本信息,UserHostAddress 传回远方客户端机器的主机IP 地址,UserHostName 传回远方客户端机器的DNS 名称,PhysicalApplicationPath 传回目前请求网页在Server 端的真实路径。

从浏览器获取数据

利用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>

得到客户端的信息

利用Request对象内置的属性,可以得到一些客户端的信息,比如客户端浏览器版本和客户端地址等等

<%@ Page Language="C#"%>

客户端浏览器:<%=Request.UserAgent %>

客户端IP地址:<%=Request.UserHostAddress %>

当前文件服务端物理路径:<%=Request.PhysicalApplicationPath %>

Request 对象的属性

  UserLanguages 客户端主机所使用的语言
  UserHostName 客户端主机的DNS名称
  userHostArrress 客户端主机的IP地址
  UserAgent 客户端浏览器版本
  Url 当前要求的URL
  TotalBytes 当前输入的容量大小
  ServerVariables 网页的Server变量
  RequestType 客户端网页的传送方式(Get/Post)
  RawUrl 当前页面的U『RL
  QueryString 浏览器地址栏后的参数
  PhysicalPath 当前网页在服务器端的实际路径
  PhysicalApplicationPath 当前在服务器端执行的程序的实际路径
  Pathq 当前网页的相对地址
  Params 返回QueryString、Form、Cookies、ServerVariables的全部集合  
IsSecureConnection 目前联机的安全性
  IsAuthenticated 目前联机是否有效
  HttpMethod 目前客户端网页的传送方式(Get/Post)
  Headers 网页的标题集合
  Form 窗体变量
  Files 客户端上传的文件
  FilePath 当前执行网页的相对地址
  Cookies HttpCookieCollection对象集合
  ContentType 当前需求的MIME内容类型
  ContentEncoding 客户端浏览器的字符设置 -
  ConnectionlD 客户端所提出的网页浏览请求的联机的ID
  ClientCertificate 客户端安全认证信息
  Browser 客户端浏览器的信息
  AnnlicationPath 当前运行程序的服务器端虚拟目录
--------------------------http://zxyklmyt.blog.163.com/blog/static/88881207200811143816411/--------------------------

ASP.NET的UrlReferrer方法虽然可以获取来源网址,但最近在进行移动开发的时候,虽然UrlReferrer获取的包含中文参数的地址是正确的,但设置为Link的NavigateUrl属性时,点击链接返回后,来源网址获取的是乱码。所以使用该替代方法getParam:

private string getParam(string strHref, string strName)

{

int intPos = strHref.IndexOf("?");

if (intPos < 1)

return "";

string strRight = strHref.Substring(intPos + 1);

string[] arrPram = Utils.SplitString(strRight, "&");//SplitString方法:将某字符串按特定字符或字符串分割为字符串数组

for (int i = 0; i < arrPram.Length; i++)

{

string[] arrPramName = Utils.SplitString(arrPram[i], "=");

if (arrPramName[0].ToLower() == strName.ToLower()) return arrPramName[1];

}

return "";

}

如何使用:

protected void Page_Load(object sender, EventArgs e)

{

string url = Request.UrlReferrer.ToString();

url = "SearchResult.aspx?sArea=" + Server.UrlEncode(getParam(url, "sArea")) + "&sKeyword=" + Server.UrlEncode(getParam(url, "sKeyword"));

linkBack.NavigateUrl = url;

}

-------------------------------------------疯狂_飞鱼------------------------------------------------------------

asp.net中Request对象 技术浅析 (转)

Request对象

当客户端发出请求执行asp.net程序时,CLR会将客户端的请求信息包含在Request对象中。这些请求信息包括请求报头,客户端的基本信息(如浏览器类型,浏览器版本号,用户所用的语言以及编码方式等),请求方法(如post,get),参数名,参数值等。

Request对象的调用方法:Request.Collection["Variable"];

其中Collection包括四种集合:QueryString,Form,Cookies,ServerVariables。

1.QueryString集合收集的信息来源于请求url地址中"?"号后面的数据,这些数据称作url附加信息。例如,www.sina.com/show.asp?id=111

在此url中,QueryString收集到的信息是"show.asp?"后面的数据"id=111"。此时,取得参数"id"的参数值的语句为:Request.QueryString["id"];

QueryString主要用于收集http协议中get请求发送的数据,如果在一个请求事件中被请求的程序url地址出现了"?"号后的数据,则表示此次请求方式为get。get方法是http中的默认请求方法。

那么,如何发送get请求方法呢?

(1)<a href="show.aspx?id=111">显示ID为111的文章</a>

(2)<form action="show.aspx" method="get">

<input type="text" name="id" value="111">

</form>

下面演示一个例子,这个例子中有两个程序,分别是form1.htm和GetInfo1.aspx,其中form1.htm发送get请求,GetInfo1.aspx接收get请求。

///////////////////////////////////////////////////

form1.htm

///////////////////////////////////////////////////

<HTML>

<HEAD>

<TITLE> 发送GET请求</TITLE>

</HEAD>

<BODY>

<center>

发送GET请求

<hr>

<form action="GetInfo1.aspx" method="get">

您的大名:<input type="text" name="nickname"><br>

<input type="submit" value="发送">

<form>

</center>

</BODY>

</HTML>

//////////////////////////////////////////

GetInfo1.aspx

//////////////////////////////////////////

<% @ Page Language="C#" %>

<html>

<head>

<title>接收GET请求</title>

</head>

<body>

<center>

接收GET方法传来的值:

<hr>

<%

string NickName = Request.QueryString["nickname"];<%--接收参数值--%>

Response.Write("GET方法传来的nickname的值为:"+NickName);

%>

</center>

</body>

</html>

2.get方法是将传递的数据追加至url中。url地址长度是有限制的,因此使用get方法所能传递的数据也是有限的。一般地,get方法能够传递256字节的数据,在多数情况下,使用get方法传递的数据长度是远远不够的,这时便需要使用http的另外一种请求方式post,post方法可传递的数据的最大值为2MB。

post请求必须由form发出。而且,在使用post请求方法的时候,需要将"method"设置为"post"。asp.net使用Request.Form方法接收post方法传递的数据:Request.Form["Variable"];

接下来也举两个例子,来说明post方法的使用,类似于上面的例子,注意对比。

//////////////////////////////////////////////

form2.htm//发送post请求

//////////////////////////////////////////////

<HTML>

<HEAD>

<TITLE> 发送POST请求</TITLE>

</HEAD>

<BODY>

<center>

发送POST请求

<hr>

<form action="GetInfo2.aspx" method="post">

您的大名:<input type="text" name="nickname"><br>

<input type="submit" value="发送">

<form>

</center>

</BODY>

</HTML>

//////////////////////////////////////////////////

GetInfo2.aspx//接收post请求

//////////////////////////////////////////////////

<% @ Page Language="C#" %>

<html>

<head>

<title>接收POST请求</title>

</head>

<body>

<center>

接收POST方法传来的值:

<hr>

<%

string NickName = Request.Form["nickname"];

Response.Write("POST方法传来的nickname的值为:"+NickName);

%>

</center>

</body>

</html>

3.cookie的使用在后面再讲。

4.ServerVariable

ServerVariable(环境变量)包含了客户机和服务器的系统信息。获得环境变量值的方法是:Request.ServerVariables["Variable"];

Variable参数 含义

HTTP_USER_AGENT 获得用户使用的浏览器类型和版本

REMOTE_ADDR 获取用户的IP地址

REQUEST_METHOD 获取请求的方法

LOCAL_ADDR 获取服务器的IP地址

SERVER_NAME 获取服务器的主机名

PATH_INFO 获取当前执行程序的虚拟路径

PATH_TRANSLATED 获取当前执行程序的绝对路径

CONTENT_LENGTH 获取请求程序所发送内容的字符总数

CONTENT_TYPE 获取请求的信息类型

GATEWAY_INTERFACE 获取网关接口

QUERY_STRING 获取url的附加信息

SCRIPT_NAME 获取当前程序的文件名(包含虚拟路径)

SERVER_PORT 获取服务器接受请求的端口

SERVER_PROTOCOL 获取服务器遵从的协议以及版本号

HTTP_ACCEPT_LANGUAGE 获取用户所使用的语言

最后举一个关于ServerVariable的例子,这个例子的结果也可作为日后查阅ServerVariable集合的原始资料。

/////////////////////////////////////////////////////////

<% @ Page Language="C#" %>

<% @ Import Namespace="System.Data" %>

<Script Language="C#" Runat="Server">

public void Page_Load(Object src,EventArgs e)

{

//取得ServerVariables变量集合

NameValueCollection ServerVariables = Request.ServerVariables;



//产生一个数据集合,它的用法,我们后面再讨论

DataTable dt = new DataTable();

DataRow dr;

dt.Columns.Add(new DataColumn("环境变量",typeof(string)));

dt.Columns.Add(new DataColumn("变量值",typeof(string)));

foreach(string SingleVariable in ServerVariables)

{

dr = dt.NewRow();

dr[0] = SingleVariable;

dr[1] = ServerVariables[SingleVariable].ToString();

dt.Rows.Add(dr);

}

DataGrid1.DataSource = new DataView(dt);

DataGrid1.DataBind();

}

</script>

<html>

<head>

<title></title>

</head>

<body>

<ASP:DataGrid id="DataGrid1" runat="server"

BorderColor="black"

BorderWidth="1"

GridLines="Both"

CellPadding="3"

CellSpacing="0"

Font-Name="Verdana"

Font-Size="8pt"

HeaderStyle-BackColor="#aaaadd"

AlternatingItemStyle-BackColor="#eeeeee"

/>

</body>

</html>

//////////////////////////////////////

5.Request的Browser对象

Request.Browser.Browser//检测浏览器的类型

Request.Browser.Version//检测浏览器的版本

Request.Browser.ActiveXControls//检测浏览器是否支持ActiveX控件

Request.Browser.Cookies//检测浏览器是否支持Cookies

Request.Browser.VBScript//检测浏览器是否支持VBScript

下面这个例子说明Browser所有能够访问的属性。

////////////////////////////////////////////////////////////

<html>

<head>

<script runat="server" language="c#">

public void Page_Load(Object Source, EventArgs E)

{

HttpBrowserCapabilities bc= Request.Browser;

Welcome.Text = "您好,您正在使用 " + bc.Browser + " v." + bc.Version + ",你的运行平台是 " + bc.Platform ;

ActiveXControls.Text = bc.ActiveXControls.ToString();

AOL.Text = bc.AOL.ToString();

BackgroundSounds.Text = bc.BackgroundSounds.ToString();

Beta.Text = bc.Beta.ToString();

Browser.Text = bc.Browser.ToString();

CDF.Text = bc.CDF.ToString();

Cookies.Text = bc.Cookies.ToString();

Crawler.Text = bc.Crawler.ToString();

Frames.Text = bc.Frames.ToString();

JavaApplets.Text = bc.JavaApplets.ToString();

JavaScript.Text = bc.JavaScript.ToString();

MajorVersion.Text = bc.MajorVersion.ToString();

MinorVersion.Text = bc.MinorVersion.ToString();

Platform.Text = bc.Platform.ToString();

Tables.Text = bc.Tables.ToString();

Type.Text = bc.Type.ToString();

VBScript.Text = bc.VBScript.ToString();

Version.Text = bc.Version.ToString();

Win16.Text = bc.Win16.ToString();

Win32.Text = bc.Win32.ToString();

}

</script>

<style>

body{font-size:9pt}

td{font-size:9pt}

</style>

</head>

<body>

<form runat="server" method="post">

您的浏览器信息已经完全在我们的掌握中了^&^:<br>

<asp:Label runat="server" id="Welcome" Font-Bold="True" />

<table border="1" width="400" bordercolor="black">

<tr bgcolor="skyblue">

<td width="50%"><b>浏览器属性<b></td>

<td width="50%"><b>检测结果<b></td>

</tr>

<tr >

<td width="50%">ActiveXControls:</td>

<td width="50%"><asp:Label runat="server" id="ActiveXControls" /></td>

</tr>

<tr bgcolor="skyblue">

<td width="50%">AOL:</td>

<td width="50%"><asp:Label runat="server" id="AOL" /></td>

</tr>

<tr >

<td width="50%">BackgroundSounds:</td>

<td width="50%"><asp:Label runat="server" id="BackgroundSounds" /></td>

</tr>

<tr bgcolor="skyblue">

<td width="50%">Beta:</td>

<td width="50%"><asp:Label runat="server" id="Beta" /></td>

</tr>

<tr >

<td width="50%">Browser:</td>

<td width="50%"><asp:Label runat="server" id="Browser" /></td>

</tr>

<tr bgcolor="skyblue">

<td width="50%">CDF:</td>

<td width="50%"><asp:Label runat="server" id="CDF" /></td>

</tr>

<tr >

<td width="50%">Cookies:</td>

<td width="50%"><asp:Label runat="server" id="Cookies" /></td>

</tr>

<tr bgcolor="skyblue">

<td width="50%">Crawler:</td>

<td width="50%"><asp:Label runat="server" id="Crawler" /></td>

</tr>

<tr>

<td width="50%">Frames:</td>

<td width="50%"><asp:Label runat="server" id="Frames" /></td>

</tr>

<tr bgcolor="skyblue">

<td width="50%">JavaApplets:</td>

<td width="50%"><asp:Label runat="server" id="JavaApplets" /></td>

</tr>

<tr>

<td width="50%">JavaScript:</td>

<td width="50%"><asp:Label runat="server" id="JavaScript" /></td>

</tr>

<tr bgcolor="skyblue">

<td width="50%">MajorVersion:</td>

<td width="50%"><asp:Label runat="server" id="MajorVersion" /></td>

</tr>

<tr>

<td width="50%">MinorVersion:</td>

<td width="50%"><asp:Label runat="server" id="MinorVersion" /></td>

</tr>

<tr bgcolor="skyblue">

<td width="50%">Platform:</td>

<td width="50%"><asp:Label runat="server" id="Platform" /></td>

</tr>

<tr>

<td width="50%">Tables:</td>

<td width="50%"><asp:Label runat="server" id="Tables" /></td>

</tr>

<tr bgcolor="skyblue">

<td width="50%">Type:</td>

<td width="50%"><asp:Label runat="server" id="Type" /></td>

</tr>

<tr>

<td width="50%">VBScript:</td>

<td width="50%"><asp:Label runat="server" id="VBScript" /></td>

</tr>

<tr bgcolor="skyblue">

<td width="50%">Version:</td>

<td width="50%"><asp:Label runat="server" id="Version" /></td>

</tr>

<tr>

<td width="50%">Win16:</td>

<td width="50%"><asp:Label runat="server" id="Win16" /></td>

</tr>

<tr bgcolor="skyblue">

<td width="50%">Win32:</td>

<td width="50%"><asp:Label runat="server" id="Win32" /></td>

</tr>

</table>

</form>

</body>

</html>

//////////////////////////////////////////////////////////////////

6.其它Request属性和方法

FilePath 取得当前请求的文件路径

HttpMethod 取得当前请求的方法

Files 关乎文件的上传,后面会讲解

Params 获得QueryString+Form+ServerVariable+Cookies的集合

TotalBytes 请求内容的大小

Url 获得url信息

UserHostAddress 取得用户的IP地址

UserHostName 取得用户的主机名

UserLanguages 取得用户所用语言

Cookies集合

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: