在ASP.NET 中可以透過QueryString取得URL的參數。
ASP可以透過以下為方法取得網路請求時的相關資訊:
<範例>
string QUERY_STRING = Request.ServerVariables.Get("QUERY_STRING");
Response.Write(QUERY_STRING);
[ 環境變數名稱集合 ]
ALL_HTTP:傳送到客戶端的所有HTTP header資料
ALL_RAW:傳送到客戶端的所有資料(以raw的資料格式)
APPL_MD_PATH:傳回伺服端的metabase路徑
APPL_PHYSICAL_PATH:將APPL_MD_PATH轉換成為實際的路徑傳回
AUTH_PASSWORD:傳回客戶端使用者在確認對話框中所輸入的密碼
AUTH_TYPE:傳回客戶端認證的方法
AUTH_USER:傳回客戶端確認在確認對話框中所輸入的使用者名稱
CONTENT_LENGTH:傳回content的資料長度
CONTENT_TYPE:傳回客戶端文件傳送的型態,如GET或POST等...
GATEWAY_INTERFACE:傳回伺服端的CGI版本
HTTP_:傳回使用者自建的HTTP Header資料
LOCAL_ADDR:傳回伺服端電腦的IP位址
LOGON_USER:傳回登錄Windows NT的使用者資訊
PATH_INFO:取得目前網頁的虛擬路徑
PATH_TRANSLATED: 目前執行的ASP程式,位於伺服端的真實路徑
QUERY_STRING:傳回在HTTP://後以?所傳遞的參數資料
REMOTE_ADDR:遠端主機的IP位址
REMOTE_HOST:遠端主機的名稱
REMOTE_USER:遠端的使用者名稱
REQUEST_METHOD:傳回HTTP的請求方式,如GET或POST等...
SCRIPT_NAME:被執行的ASP檔案完整的虛擬路徑
SERVER_NAME:傳回網頁伺服端的電腦名稱,DNS或IP位址
SERVER_PORT:伺服端HTTP的埠(Port)
SERVER_PORT_SECURE:傳回客戶端是否指定安全的埠,是則為1,否為0
SERVER_PROTOCOL:取得HTTP的版本
SERVER_SOFTWARE:取得網頁伺服器的名稱與版本
URL:取得目前網頁虛擬路徑的儲存位址
但某些時候需要取得完整網址的時候可以透過以下函數自動重組各個參數,進而取得目前的網路路徑。
private string initUrl(string queryStrTag,string queryValue)
{
string result = Request.ServerVariables.Get("URL");
bool isOneValue = false;
string queryStr = Request.ServerVariables.Get("QUERY_STRING");
string[] qStrs = queryStr.Split('&');
List<KV> parm = new List<KV>();
for (int i = 0; i < qStrs.Length; i++)
{
string[] str = qStrs[i].Split('=');
if (str.Length != 2)
continue;
KV kv = new KV();
kv.Key = str[0];
kv.Value = str[1];
parm.Add(kv);
}
bool isExtra = false;
for (int j = 0; j < parm.Count; j++){
if (parm[j].Key.Equals(queryStrTag)){
isExtra = true;
parm[j].Value = queryValue;
}
}
if (isExtra){
result += "?";
for(int i=0;i<parm.Count;i++){
KV str = parm[i];
if (i != 0)
result += "&";
result += str.Key + "=" + str.Value;
}
}else{
if (queryStr.Equals("")){
result += "?";
isOneValue = true;
}else{
result += "?" + queryStr;
}
if (!isOneValue)
result += "&";
result += queryStrTag + "=" + queryValue;
}
return result;
}
private class KV{
private string _key;
public string Key{
get { return _key; }
set { _key = value; }
}
private string _value;
public string Value{
get { return _value; }
set { _value = value; }
}
}
留言列表