1、HttpRequest 成員 web
公共構造函數 算法
說明 windows |
|
HttpRequest api |
初始化 HttpRequest 對象。 數組 |
公共屬性 瀏覽器
說明 服務器 |
|
AcceptTypes cookie |
獲取客戶端支持的 MIME 接受類型的字符串數組。 |
獲取該用戶的匿名標識符(若是存在)。 |
|
獲取服務器上 ASP.NET 應用程序的虛擬應用程序根路徑。 |
|
獲取應用程序根的虛擬路徑,並經過對應用程序根使用波形符 (~) 表示法(例如,以「~/page.aspx」的形式)使該路徑成爲相對路徑。 |
|
獲取或設置有關正在請求的客戶端的瀏覽器功能的信息。 |
|
獲取當前請求的客戶端安全證書。 |
|
獲取或設置實體主體的字符集。 |
|
指定客戶端發送的內容長度(以字節計)。 |
|
獲取或設置傳入請求的 MIME 內容類型。 |
|
獲取客戶端發送的 cookie 的集合。 |
|
獲取當前請求的虛擬路徑。 |
|
獲取當前請求的虛擬路徑。 |
|
獲取採用多部分 MIME 格式的由客戶端上載的文件的集合。 |
|
獲取或設置在讀取當前輸入流時要使用的篩選器。 |
|
獲取窗體變量集合。 |
|
獲取 HTTP 頭集合。 |
|
獲取客戶端使用的 HTTP 數據傳輸方法(如 GET、POST 或 HEAD)。 |
|
獲取傳入的 HTTP 實體主體的內容。 |
|
獲取一個值,該值指示是否驗證了請求。 |
|
獲取一個值,該值指示該請求是否來自本地計算機。 |
|
獲取一個值,該值指示 HTTP 鏈接是否使用安全套接字(即 HTTPS)。 |
|
從 Cookies、Form、QueryString 或 ServerVariables 集合中獲取指定的對象。 |
|
獲取當前用戶的 WindowsIdentity 類型。 |
|
獲取 QueryString、Form、ServerVariables 和 Cookies 項的組合集合。 |
|
獲取當前請求的虛擬路徑。 |
|
獲取具備 URL 擴展名的資源的附加路徑信息。 |
|
獲取當前正在執行的服務器應用程序的根目錄的物理文件系統路徑。 |
|
獲取與請求的 URL 相對應的物理文件系統路徑。 |
|
獲取 HTTP 查詢字符串變量集合。 |
|
獲取當前請求的原始 URL。 |
|
獲取或設置客戶端使用的 HTTP 數據傳輸方法(GET 或 POST)。 |
|
獲取 Web 服務器變量的集合。 |
|
獲取當前輸入流中的字節數。 |
|
獲取有關當前請求的 URL 的信息。 |
|
獲取有關客戶端上次請求的 URL 的信息,該請求連接到當前的 URL。 |
|
獲取客戶端瀏覽器的原始用戶代理信息。 |
|
獲取遠程客戶端的 IP 主機地址。 |
|
獲取遠程客戶端的 DNS 名稱。 |
|
獲取客戶端語言首選項的排序字符串數組。 |
公共方法
名稱 |
說明 |
執行對當前輸入流進行指定字節數的二進制讀取。 |
|
用做特定類型的哈希函數。GetHashCode 適合在哈希算法和數據結構(如哈希表)中使用。 (從 Object 繼承。) |
|
將傳入圖像字段窗體參數映射爲適當的 x 座標值和 y 座標值。 |
|
已重載。 爲當前請求將請求的 URL 中的虛擬路徑映射到服務器上的物理路徑。 |
|
肯定指定的 Object 實例是不是相同的實例。 (從 Object 繼承。) |
|
將 HTTP 請求保存到磁盤。 |
|
對經過 Cookies 、Form 和 QueryString 屬性訪問的集合進行驗證。 |
受保護的方法
說明 |
|
容許 Object 在「垃圾回收」回收 Object 以前嘗試釋放資源並執行其餘清理操做。 (從Object 繼承。) |
|
建立當前 Object 的淺表副本。 (從 Object 繼承。) |
2、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 %>
3、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
4、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
6、獲取客戶端信息
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 />");