• ASP.NET使用Request获取来源网址URL参数


    ASP.NET使用Request获取来源网址URL参数

    引自:http://blog.csdn.net/zjfei/archive/2009/11/10/4796058.aspx

     

    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    取得用户所用语言

     

  • 相关阅读:
    51nod 1463 找朋友 (扫描线+线段树)
    51nod 1295 XOR key (可持久化Trie树)
    51nod 1494 选举拉票 (线段树+扫描线)
    51Nod 1199 Money out of Thin Air (树链剖分+线段树)
    51Nod 1287 加农炮 (线段树)
    51Nod 1175 区间中第K大的数 (可持久化线段树+离散)
    Codeforces Round #426 (Div. 1) B The Bakery (线段树+dp)
    前端基础了解
    git 教程
    HIVE 默认分隔符 以及linux系统中特殊字符的输入和查看方式
  • 原文地址:https://www.cnblogs.com/sgivee/p/1796995.html
Copyright © 2020-2023  润新知