博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#.NET Request相关操作

Posted on 2011-02-10 10:26  moss_tan_jun  阅读(11246)  评论(0编辑  收藏  举报

 

 using System;
using
System.Web;
using
System.Text;

namespace
Pub.Class
{
   
/// <summary>

   
/// Requests操作类
   
/// </summary>

    public class Request2 {
       
#region Get/GetInt/GetFloat

       
/// <summary>
       
/// 接收传值
       
/// </summary>

       
/// <param name="VarName">参数名称</param>
       
/// <returns>参数对应的值</returns>
        static public String Get(String VarName)
        {
           
string varValue = ""
;
           
if (HttpContext.Current.Request[VarName]!=null
)
                varValue
=
HttpContext.Current.Request[VarName].ToString();
           
return
varValue;
        }
       
/// <summary>

       
/// GetInt
       
/// </summary>

       
/// <param name="varName"></param>
       
/// <param name="defValue"></param>
       
/// <returns></returns>
        static public int GetInt(string varName, int defValue) { return Get(varName).ToInt(defValue); }
       
/// <summary>

       
/// GetFloat
       
/// </summary>

       
/// <param name="varName"></param>
       
/// <param name="defValue"></param>
       
/// <returns></returns>
        static public float GetFloat(string varName, int defValue) { return Get(varName).ToFloat(defValue); }
       
#endregion


       
#region GetQ/GetQInt/GetQFloat
       
/// <summary>
       
/// 取URL上的参数
       
/// </summary>

       
/// <param name="VarName">参数名</param>
       
/// <returns>返回参数</returns>
        static public String GetQ(String VarName)
        {
           
string varValue = ""
;
           
if (HttpContext.Current.Request.QueryString[VarName] != null
)
                varValue
=
HttpContext.Current.Request.QueryString[VarName].ToString();
           
return
varValue;
        }
       
/// <summary>

       
/// GetQInt
       
/// </summary>

       
/// <param name="varName"></param>
       
/// <param name="defValue"></param>
       
/// <returns></returns>
        static public int GetQInt(string varName, int defValue) { return GetQ(varName).ToInt(defValue); }
       
/// <summary>

       
/// GetQFloat
       
/// </summary>

       
/// <param name="varName"></param>
       
/// <param name="defValue"></param>
       
/// <returns></returns>
        static public float GetQFloat(string varName, int defValue) { return GetQ(varName).ToFloat(defValue); }
       
#endregion


       
#region GetF/GetFInt/GetFFloat
       
/// <summary>
       
/// 取POST提交的数据
       
/// </summary>

       
/// <param name="VarName">名称</param>
       
/// <returns>返回值</returns>
        static public String GetF(String VarName)
        {
           
string varValue = ""
;
           
if (HttpContext.Current.Request.Form[VarName]!=null
)
                varValue
=
HttpContext.Current.Request.Form[VarName].ToString();
           
return
varValue;
        }
       
/// <summary>

       
/// GetFInt
       
/// </summary>

       
/// <param name="varName"></param>
       
/// <param name="defValue"></param>
       
/// <returns></returns>
        static public int GetFInt(string varName, int defValue) { return GetF(varName).ToInt(defValue); }
       
/// <summary>

       
/// GetFFloat
       
/// </summary>

       
/// <param name="varName"></param>
       
/// <param name="defValue"></param>
       
/// <returns></returns>
        static public float GetFFloat(string varName, int defValue) { return GetF(varName).ToFloat(defValue); }
       
#endregion


       
#region IsPost/IsGet
       
/// <summary>
 
/// 判断当前页面是否接收到了Post请求
 
/// </summary>

 
/// <returns>是否接收到了Post请求</returns>
  public static bool IsPost()
  {
  
return HttpContext.Current.Request.HttpMethod.Equals("POST"
);
  }
 
/// <summary>

 
/// 判断当前页面是否接收到了Get请求
 
/// </summary>

 
/// <returns>是否接收到了Get请求</returns>
  public static bool IsGet()
  {
  
return HttpContext.Current.Request.HttpMethod.Equals("GET"
);
        }
       
#endregion


       
#region 服务器变量名
       
/// <summary>
 
/// 返回指定的服务器变量信息
       
///

 
/// </summary>

 
/// <param name="strName">服务器变量名</param>
 
/// <returns>服务器变量信息</returns>
  public static string GetServerString(string strName)
  {
  
if (HttpContext.Current.Request.ServerVariables[strName] == null
)
   
return ""
;
  
return
HttpContext.Current.Request.ServerVariables[strName].ToString();
        }
       
#endregion


       
#region GetRawUrl/IsBrowserGet/IsSearchEnginesGet/GetPageName/GetQParamCount/GetFParamCount/GetParamCount/
       
/// <summary>
 
/// 获取当前请求的原始 URL(URL 中域信息之后的部分,包括查询字符串(如果存在))
 
/// </summary>

 
/// <returns>原始 URL</returns>
  public static string GetRawUrl()
  {
  
return
HttpContext.Current.Request.RawUrl;
  }
       
/// <summary>

 
/// 判断当前访问是否来自浏览器软件
 
/// </summary>

 
/// <returns>当前访问是否来自浏览器软件</returns>
  public static bool IsBrowserGet()
  {
  
string[] BrowserName = {"ie", "opera", "netscape", "mozilla", "konqueror", "firefox"
};
  
string curBrowser =
HttpContext.Current.Request.Browser.Type.ToLower();
  
for (int i = 0; i < BrowserName.Length; i++
) {
   
if (curBrowser.IndexOf(BrowserName[i]) >= 0) return true
;
   }
  
return false
;
  }
 
/// <summary>

 
/// 判断是否来自搜索引擎链接
 
/// </summary>

 
/// <returns>是否来自搜索引擎链接</returns>
        public static bool IsSearchEnginesGet() {
           
if (HttpContext.Current.Request.UrlReferrer != null
) {
               
string[] strArray = new string[] { "google", "yahoo", "msn", "baidu", "sogou", "sohu", "sina", "163", "lycos", "tom", "yisou", "iask", "soso", "gougou", "zhongsou"
};
               
string str =
HttpContext.Current.Request.UrlReferrer.ToString().ToLower();
               
for (int i = 0; i < strArray.Length; i++
) {
                   
if (str.IndexOf(strArray[i]) >= 0) return true
;
                }
            }
           
return false
;
        }
       
/// <summary>

 
/// 获得当前页面的名称
 
/// </summary>

 
/// <returns>当前页面的名称</returns>
  public static string GetPageName()
  {
  
string [] urlArr = HttpContext.Current.Request.Url.AbsolutePath.Split('/'
);
  
return urlArr[urlArr.Length - 1
].ToLower();
  }
       
/// <summary>

 
/// 返回表单或Url参数的总个数
 
/// </summary>

 
/// <returns></returns>
  public static int GetParamCount()
  {
  
return HttpContext.Current.Request.Form.Count +
HttpContext.Current.Request.QueryString.Count;
  }
       
/// <summary>

       
/// GET ParamCount
       
/// </summary>

       
/// <returns></returns>
        public static int GetQParamCount() { return (HttpContext.Current.Request.QueryString.Count); }
       
/// <summary>

       
/// POST ParamCount
       
/// </summary>

       
/// <returns></returns>
        public static int GetFParamCount() { return (HttpContext.Current.Request.Form.Count); }
       
#endregion


       
#region GetCurrentFullHost/GetHost/GetIP/GetUrl/GetReferrer/SaveRequestFile/GetOS/GetBrowser
       
/// <summary>
       
/// 取全IP包括端口
       
/// </summary>

       
/// <returns>IP和端口</returns>
        public static string GetCurrentFullHost()
        {
            HttpRequest request
=
HttpContext.Current.Request;
           
if (!
request.Url.IsDefaultPort)
               
return string.Format("{0}:{1}"
, request.Url.Host, request.Url.Port.ToString());
           
return
request.Url.Host;
        }
       
/// <summary>

       
/// 取主机名
       
/// </summary>

       
/// <returns></returns>
        public static string GetHost() { return HttpContext.Current.Request.Url.Host; }
       
/// <summary>

       
/// 前台URL
       
/// </summary>

       
/// <returns></returns>
        public static string GetUrl() { return HttpContext.Current.Request.Url.ToString(); }
       
/// <summary>

       
/// 来源URL
       
/// </summary>

       
/// <returns></returns>
        public static string GetReferrer() {
           
string str = null
;
           
try
{
                str
= GetServerString("HTTP_REFERER"
).Trim();
               
if (str.Length==0) str =
HttpContext.Current.Request.UrlReferrer.ToString();
            }
catch
{ }

           
if (str == null) return ""
;
           
return
str;
        }
       
/// <summary>

       
/// 保存Request文件
       
/// </summary>

       
/// <param name="path">保存到文件名</param>
        public static void SaveRequestFile(string path)
        {
           
if (HttpContext.Current.Request.Files.Count > 0) HttpContext.Current.Request.Files[0
].SaveAs(path);
        }
       
#region GetIP

       
/// <summary>
       
/// 取IP
       
/// </summary>

       
/// <returns>返回IP</returns>
        public static string GetIP() {
           
string result =
String.Empty;
            result
= HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"
];

           
if (result != null && result != String.Empty) {//可能有代理

                if (result.IndexOf(".") == -1) result = null;
               
else
{
                   
if (result.IndexOf(",") != -1) {//有“,”,估计多个代理。取第一个不是内网的IP。

                       
                        result
= result.Replace(" ", "").Replace("'", ""
);
                       
string[] temparyip = result.Split(",;"
.ToCharArray());
                       
for (int i = 0; i < temparyip.Length; i++
) {
                           
if
(temparyip[i].IsIP()
                               
&& temparyip[i].Substring(0, 3) != "10."

                               
&& temparyip[i].Substring(0, 7) != "192.168"
                               
&& temparyip[i].Substring(0, 7) != "172.16.")
                            {
                               
return temparyip[i];    //找到不是内网的地址

                            }
                        }
                    }
                   
else if (result.IsIP()) //代理即是IP格式

                        return result;
                   
else

                        result
= null;    //代理中的内容 非IP,取IP
                }

            }

           
string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null

               
&& HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty)
               
? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"
]
                : HttpContext.Current.Request.ServerVariables[
"REMOTE_ADDR"
];

           
if (null == result || result ==
String.Empty)
                result
= HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"
];

           
if (result == null || result ==
String.Empty)
                result
=
HttpContext.Current.Request.UserHostAddress;

           
return
result;
        }
       
#endregion

       
#region GetOS
       
/// <summary>
       
/// 取操作系统
       
/// </summary>

       
/// <returns>返回操作系统</returns>
        public static string GetOS() {
            HttpBrowserCapabilities bc
= new
HttpBrowserCapabilities();
            bc
=
System.Web.HttpContext.Current.Request.Browser;
           
return
bc.Platform;
        }
       
#endregion

       
#region GetBrowser
       
/// <summary>
       
/// 取游览器
       
/// </summary>

       
/// <returns>返回游览器</returns>
        public static string GetBrowser()
        {
            HttpBrowserCapabilities bc
= new
HttpBrowserCapabilities();
            bc
=
System.Web.HttpContext.Current.Request.Browser;
           
return
bc.Type;
        }
       
#endregion

       
#endregion
    }
}