using System;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Net;
using System.IO;
namespace CallCenter.Utility
{
///
/// 页面获取数据类
///
public class RequestString
{
///
/// 判断当前页面是否接收到了Post请求
///
/// 是否接收到了Post请求
public static bool IsPost()
{
return HttpContext.Current.Request.HttpMethod.Equals("POST");
}
///
/// 判断当前页面是否接收到了Get请求
///
/// 是否接收到了Get请求
public static bool IsGet()
{
return HttpContext.Current.Request.HttpMethod.Equals("GET");
}
///
/// 返回URL中结尾的文件名
///
public static string GetFilename(string url)
{
if (url == null)
{
return "";
}
string[] strs1 = url.Split(new[] { '/' });
return strs1[strs1.Length - 1].Split(new[] { '?' })[0];
}
///
/// 返回指定的服务器变量信息
///
/// 服务器变量名
/// 服务器变量信息
public static string GetServerString(string strName)
{
if (HttpContext.Current.Request.ServerVariables[strName] == null)
return "";
return HttpContext.Current.Request.ServerVariables[strName];
}
///
/// 返回上一个页面的地址
///
/// 上一个页面的地址
public static string GetUrlReferrer()
{
string retVal = null;
try
{
if (HttpContext.Current.Request.UrlReferrer != null)
retVal = HttpContext.Current.Request.UrlReferrer.ToString();
}
catch (Exception)
{ }
if (retVal == null)
return "";
return retVal;
}
///
/// 得到当前完整主机头
///
///
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(CultureInfo.InvariantCulture));
return request.Url.Host;
}
///
/// 得到主机头
///
///
public static string GetHost()
{
return HttpContext.Current.Request.Url.Host;
}
///
/// 得到主机名
///
public static string GetDnsSafeHost()
{
return HttpContext.Current.Request.Url.DnsSafeHost;
}
///
/// 获取当前请求的原始 URL(URL 中域信息之后的部分,包括查询字符串(如果存在))
///
/// 原始 URL
public static string GetRawUrl()
{
return HttpContext.Current.Request.RawUrl;
}
///
/// 判断当前访问是否来自浏览器软件
///
/// 当前访问是否来自浏览器软件
public static bool IsBrowserGet()
{
string[] BrowserName = { "ie", "opera", "netscape", "mozilla", "konqueror", "firefox" };
string curBrowser = HttpContext.Current.Request.Browser.Type.ToLower();
return BrowserName.Any(t => curBrowser.IndexOf(t, StringComparison.Ordinal) >= 0);
}
///
/// 判断是否来自搜索引擎链接
///
/// 是否来自搜索引擎链接
public static bool IsSearchEnginesGet()
{
if (HttpContext.Current.Request.UrlReferrer == null)
return false;
string[] SearchEngine = { "google", "yahoo", "msn", "baidu", "sogou", "sohu", "sina", "163", "lycos", "tom", "yisou", "iask", "soso", "gougou", "zhongsou" };
string tmpReferrer = HttpContext.Current.Request.UrlReferrer.ToString().ToLower();
return SearchEngine.Any(t => tmpReferrer.IndexOf(t, StringComparison.Ordinal) >= 0);
}
///
/// 获得当前完整Url地址
///
/// 当前完整Url地址
public static string GetUrl()
{
return HttpContext.Current.Request.Url.ToString();
}
///
/// 获取文件
///
///
///
public static HttpPostedFile GetFile(string strName)
{
return HttpContext.Current.Request.Files[strName];
}
///
/// 获取文件
///
///
public static HttpFileCollection GetFiles()
{
return HttpContext.Current.Request.Files;
}
///
/// 获取stream
///
///
public static Stream GetInputStream()
{
return HttpContext.Current.Request.InputStream;
}
///
/// 获得指定Url参数的值
///
/// Url参数
/// Url参数的值
public static string GetQueryString(string strName)
{
return GetQueryString(strName, false);
}
///
/// 获得指定Url参数的值
///
/// Url参数
/// 是否进行SQL安全检查
/// Url参数的值
public static string GetQueryString(string strName, bool sqlSafeCheck)
{
if (HttpContext.Current.Request.QueryString[strName] == null)
return "";
if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.QueryString[strName]))
return "";
return HttpContext.Current.Request.QueryString[strName];
}
///
/// 获得指定Url参数的值
///
/// Url参数
/// 是否进行SQL安全检查
/// 当SQL安全检查不通过或无值时的默认值
/// Url参数的值
public static string GetQueryString(string strName, bool sqlSafeCheck, string defValue)
{
if (HttpContext.Current.Request.QueryString[strName] == null)
return defValue;
if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.QueryString[strName]))
return defValue;
return HttpContext.Current.Request.QueryString[strName];
}
///
/// SQL危险字符过滤
///
/// 要过滤的字符串
/// 安全级别{1最高}
///
public static string FilterSql(string source, int SafeLevel)
{
//单引号替换成两个单引号
source = source.Replace("'", "''");
source = source.Replace("--", "--");
if (SafeLevel == 1)
{
//单引号替换成两个单引号
source = source.Replace("\"", "“");
source = source.Replace("|", "|");
//半角封号替换为全角封号,防止多语句执行
source = source.Replace(";", ";");
source = source.Replace("=", "=");
//半角括号替换为全角括号
source = source.Replace("(", "(");
source = source.Replace(")", ")");
}
return source;
}
///
/// 检测是否有Sql危险字符
///
/// 要判断字符串
/// 判断结果
public static bool IsSafeSqlString(string str)
{
return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");
}
///
/// 检测是否有危险的可能用于链接的字符串
///
/// 要判断字符串
/// 判断结果
public static bool IsSafeUserInfoString(string str)
{
return !Regex.IsMatch(str, @"^\s*$|^c:\\con\\con$|[%,\*" + "\"" + @"\s\t\<\>\&]|游客|^Guest");
}
///
/// 获得当前页面的名称
///
/// 当前页面的名称
public static string GetPageName()
{
string[] urlArr = HttpContext.Current.Request.Url.AbsolutePath.Split('/');
return urlArr[urlArr.Length - 1].ToLower();
}
///
/// 返回表单或Url参数的总个数
///
///
public static int GetParamCount()
{
return HttpContext.Current.Request.Form.Count + HttpContext.Current.Request.QueryString.Count;
}
///
/// 获得指定表单参数的值
///
/// 表单参数
/// 表单参数的值
public static string GetFormString(string strName)
{
return GetFormString(strName, false);
}
///
/// 获得指定表单参数的值
///
/// 表单参数
/// 是否进行SQL安全检查
/// 表单参数的值
public static string GetFormString(string strName, bool sqlSafeCheck)
{
if (HttpContext.Current.Request.Form[strName] == null)
return "";
if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.Form[strName]))
return "";
return HttpContext.Current.Request.Form[strName];
}
///
/// 获得指定表单参数的值
///
/// 表单参数
/// 是否进行SQL安全检查
/// 当SQL安全检查不通过或无值时的默认值
/// 表单参数的值
public static string GetFormString(string strName, bool sqlSafeCheck, string defValue)
{
if (HttpContext.Current.Request.Form[strName] == null)
return defValue;
if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.Form[strName]))
return defValue;
return HttpContext.Current.Request.Form[strName];
}
///
/// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
///
/// 参数
/// Url或表单参数的值
public static string GetString(string strName)
{
return GetString(strName, false);
}
///
/// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
///
/// 参数
/// 是否进行SQL安全检查
/// Url或表单参数的值
public static string GetString(string strName, bool sqlSafeCheck)
{
if ("".Equals(GetQueryString(strName)))
return GetFormString(strName, sqlSafeCheck);
return GetQueryString(strName, sqlSafeCheck);
}
///
/// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
///
/// 参数
/// 是否进行SQL安全检查
/// 当SQL安全检查不通过或无值时的默认值
/// Url或表单参数的值
public static string GetString(string strName, bool sqlSafeCheck, string defValue)
{
if ("".Equals(GetQueryString(strName)))
return GetFormString(strName, sqlSafeCheck, defValue);
return GetQueryString(strName, sqlSafeCheck, defValue);
}
///
/// 获得指定Url参数的int类型值
///
/// Url参数
/// Url参数的int类型值
public static int GetQueryInt(string strName)
{
return TypeConverter.StrToInt(HttpContext.Current.Request.QueryString[strName], 0);
}
///
/// 获得指定Url参数的int类型值
///
/// Url参数
/// 缺省值
/// Url参数的int类型值
public static int GetQueryInt(string strName, int defValue)
{
return TypeConverter.StrToInt(HttpContext.Current.Request.QueryString[strName], defValue);
}
///
/// 获得指定表单参数的int类型值
///
/// 表单参数
/// 缺省值
/// 表单参数的int类型值
public static int GetFormInt(string strName, int defValue)
{
return TypeConverter.StrToInt(HttpContext.Current.Request.Form[strName], defValue);
}
///
/// 获得指定Url或表单参数的int类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值
///
/// Url或表单参数
/// 缺省值
/// Url或表单参数的int类型值
public static int GetInt(string strName, int defValue)
{
if (GetQueryInt(strName, defValue) == defValue)
return GetFormInt(strName, defValue);
return GetQueryInt(strName, defValue);
}
///
/// 获得指定Url参数的float类型值
///
/// Url参数
/// 缺省值
/// Url参数的int类型值
public static float GetQueryFloat(string strName, float defValue)
{
return TypeConverter.StrToFloat(HttpContext.Current.Request.QueryString[strName], defValue);
}
///
/// 获得指定表单参数的float类型值
///
/// 表单参数
/// 缺省值
/// 表单参数的float类型值
public static float GetFormFloat(string strName, float defValue)
{
return TypeConverter.StrToFloat(HttpContext.Current.Request.Form[strName], defValue);
}
///
/// 获得指定Url或表单参数的float类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值
///
/// Url或表单参数
/// 缺省值
/// Url或表单参数的int类型值
public static float GetFloat(string strName, float defValue)
{
if (GetQueryFloat(strName, defValue) == defValue)
return GetFormFloat(strName, defValue);
return GetQueryFloat(strName, defValue);
}
///
/// 获得当前页面客户端的IP
///
/// 当前页面客户端的IP
public static string GetIP()
{
try
{
string result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (string.IsNullOrEmpty(result))
result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(result))
result = HttpContext.Current.Request.UserHostAddress;
if (string.IsNullOrEmpty(result) || !ValidateString.IsIP(result))
return "127.0.0.1";
return result;
}
catch
{
return "127.0.0.1";
}
}
///
/// 获取URL地址的网页内容
///
public class GetUrlText
{
///
/// Gets the text.
///
/// 地址 The URL.
/// 编码 The encoding.
///
public static string GetText(string url, string Encoding)
{
WebResponse wr_result = null;
var txthtml = new StringBuilder();
try
{
WebRequest wr_req = WebRequest.Create(url);
wr_result = wr_req.GetResponse();
Stream ReceiveStream = wr_result.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding(Encoding);
var sr = new StreamReader(ReceiveStream, encode);
if (true)
{
var read = new Char[256];
int count = sr.Read(read, 0, 256);
while (count > 0)
{
var str = new String(read, 0, count);
txthtml.Append(str);
count = sr.Read(read, 0, 256);
}
}
}
catch (Exception)
{
txthtml.Append("err");
}
finally
{
if (wr_result != null)
{
wr_result.Close();
}
}
return txthtml.ToString();
}
public static string GetText(string HttpUrl)
{
try
{
HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = HttpUrl,//URL 必需项
Method = "get",//URL 可选项 默认为Get
IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写
Cookie = "",//字符串Cookie 可选项
Referer = "",//来源URL 可选项
Postdata = "",//Post数据 可选项GET时不需要写
Timeout = 100000,//连接超时时间 可选项默认为100000
ReadWriteTimeout = 30000,//写入Post数据超时时间 可选项默认为30000
ContentType = "text/html",//返回类型 可选项有默认值
Allowautoredirect = false,//是否根据301跳转 可选项
//CerPath = "d:\123.cer",//证书绝对路径 可选项不需要证书时可以不写这个参数
//Connectionlimit = 1024,//最大连接数 可选项 默认为1024
ProxyIp = "",//代理服务器ID 可选项 不需要代理 时可以不设置这三个参数
//ProxyPwd = "123456",//代理服务器密码 可选项
//ProxyUserName = "administrator",//代理服务器账户名 可选项
};
var result = http.GetHtml(item);
string html = result.Html;
return html;
//var request = (HttpWebRequest)HttpWebRequest.Create(HttpUrl);
//var response = (HttpWebResponse)request.GetResponse();
//var strConfig = String.Empty;
//using (var reader = new StreamReader(response.GetResponseStream()))
//{
// strConfig = reader.ReadToEnd();
//}
//return strConfig;
}
catch (Exception)
{
return "";
}
}
}
/// 转全角的函数(SBC case)
///
///任意字符串
///全角字符串
///
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///
public static String ToSBC(String input)
{
// 半角转全角:
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 32)
{
c[i] = (char)12288;
continue;
}
if (c[i] < 127)
c[i] = (char)(c[i] + 65248);
}
return new String(c);
}
/**/
// /
// / 转半角的函数(DBC case)
// /
// /任意字符串
// /半角字符串
// /
// /全角空格为12288,半角空格为32
// /其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
// /
public static String ToDBC(String input)
{
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 12288)
{
c[i] = (char)32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
c[i] = (char)(c[i] - 65248);
}
return new String(c);
}
///
/// 去掉所有的非数字
///
///
///
public static string RemoveNotNumber(string key)
{
return Regex.Replace(key, @"[^\d]*", "");
}
///
/// 去掉所有的数字
///
///
///
public static string RemoveNumber(string key)
{
return Regex.Replace(key, @"\d", "");
}
}
}